Php 什么导致未定义索引错误?

Php 什么导致未定义索引错误?,php,html,mysql,Php,Html,Mysql,这是我的密码 <?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" /

这是我的密码

<?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>
这是我的问题。我不知道如何消除这个错误:

注意:未定义索引:在第16行的C:\xampp\htdocs\sample\view.php中滚动

第16行是$roll=$_GET[roll]


这段代码应该显示每行中的信息,但在我运行它时,它什么也没有显示。

您的问题是一个未定义的$\u GET索引。使用isset,例如

尝试类似的方法来修复查询循环

$roll = isset($_GET['roll']) ? $_GET['roll'] : null; // or a suitable default
最后,MySQL扩展现在已经被弃用。我强烈建议你改用。使用还可以解决mysql_查询中的SQL注入漏洞。

确保通过查询字符串的滚动。如果没有这些,您的PHP代码就毫无意义。您正在从MySql获取基于$roll的数据并尝试显示它;如果这个变量没有值,就没有数据。所以,按照Phil的建议添加isset,如果没有设置,就不要运行任何PHP

另外,去掉while循环,只执行$row=mysql\u fetch\u array$result一次,并且仅当isset$\u get['roll']时执行。否则,稍后您将尝试在代码中回显false。

将此代码放在$roll=$\u GET[roll]下面;
我相信您可以将错误报告设置为0;这意味着没有任何错误或错误报告4;或者你可以把它放在一个if语句中,ifasset$\u GET['roll']{$roll=$\u GET[roll];$query=select*from student,其中roll='$roll';$result=mysql\u query$query;而$row=mysql\u fetch\u array$result{}删除整个php。无论如何,您在while循环中什么也没做……您应该将isset设置为检查$_GET[roll];包含任何值,如果不执行其他操作,则当前您的$_GET[roll];是null,因此出现了错误未定义索引。@Phil循环后它将为false,因此回声也不起作用。@Adam我发现缩进模式有点不正常,但最后一部分编辑得不错。
$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>
if (isset($_GET["roll"))
{
// IF TRUE, DO THE QUERY ECHO YOUR RESULT
}

?>