1
<?php 
  mysql_connect("localhost","root",""); 
  mysql_select_db("sample") or die("database could not connect "); 
?> 
<html> 
<head>
<meta name="description" content="Php Code for View, Search, Edit and Delete 
Record" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title>View Student  Record</title>
</head>
<body>
<center><h1><u>Student Database</u></h1></center>
<?php
  $roll=$_GET["roll"]; 
  $query="select * from student where roll='$roll'"; 
  $result=mysql_query($query);
  while ($row = mysql_fetch_array($result)) { 
  }
?>
<table style=" border:1px solid silver" cellpadding="5px" cellspacing="0px" 
align="center" border="1">
<tr>
<td colspan="4" style="background:#0066FF; color:#FFFFFF; font-size:20px">VIEW 
STUDENT DATABASE</td></tr>
<tr>
<td> Roll Number</td><td><? echo $row[0];?></td> 
<td> Class</td><td><? echo $row[1];?></td> 
</tr>
<tr>
<td> Name of Student</td><td><? echo $row[2];?></td> 
</tr>
<tr>
<td>Sex</td><td><? echo $row[3];?></td> 
<td>Address1</td><td><? echo $row[4];?></td></tr>
<tr> 
<td>Address2</td><td><? echo $row[5];?></td> 
<td>Address3</td><td><? echo $row[6];?></td></tr> 
<tr>
<td>Remarks</td><td><? echo $row[7];?></td></tr> 
<tr>
</table>
<p align="center"><a href="index.php">Go Back to Home</a></p> 
</body>
</html>

それが私のコードです

<?php 
  $roll=$_GET["roll"]; 
  $query="select * from student where roll='$roll'";
  $result=mysql_query($query);
  while ($row = mysql_fetch_array($result)) {
  }
?> 

これが私の問題です。このエラーを取り除く方法がわかりません:

注意: 未定義のインデックス: 16 行目の C:\xampp\htdocs\sample\view.php にロールインします

16行目は$roll=$_GET["roll"];.

このコードは各行に情報を表示するはずですが、実行しても何も表示されません。

4

3 に答える 3

1

roll必ずクエリ文字列を渡してください。それがなければ、PHPコードはどれも意味がありません。MySqlからデータを取得し、それに基づい$rollて表示しようとしています。その変数に値がない場合、データはありません。したがって、Philが提案したように追加し、設定されていない場合は任意のPHPissetをドット実行します。

whileまた、ループを取り除き、 。の$row = mysql_fetch_array($result)場合にのみ1回だけ実行しisset($_GET['roll'])ます。falseそれ以外の場合は、後でコードでエコーを試みます。

于 2012-10-24T03:20:19.613 に答える
1

問題は未定義の$_GETインデックスです。使用isset()、例えば

$roll = isset($_GET['roll']) ? $_GET['roll'] : null; // or a suitable default

このようなことを試して、クエリループを修正してください

$result=mysql_query($query);
?>

<table style=" border:1px solid silver" cellpadding="5px" cellspacing="0px" align="center" border="1">
<tr>
<td colspan="4" style="background:#0066FF; color:#FFFFFF; font-size:20px">VIEW 
STUDENT DATABASE</td></tr>

<?php while ($row = mysql_fetch_array($result)) : ?>

<!-- rows, cells and echos, etc -->

<?php endwhile ?>

</table>

最後に、MySQL 拡張機能は非推奨になりました。PDOに切り替えることを強くお勧めします。を使用PDOStatement::bindParam()すると、SQL インジェクションの脆弱性も解決されますmysql_query()

于 2012-10-24T03:13:00.237 に答える
0

このコードを下に配置します$roll=$_GET["roll"];

if (isset($_GET["roll"))
{
// IF TRUE, DO THE QUERY ECHO YOUR RESULT
}

?>
于 2012-10-24T03:22:24.153 に答える