0

您好,我正在按姓氏的第一个字母查询名称数据库。然而,当我执行查询并打印结果时,第一个名字会一遍又一遍地打印出来,而实际上有多个名字要打印出来。这是我到目前为止所拥有的。传入的数据是一个字母,它假设收集所有具有该开头字母的姓氏。我做错了什么会导致这个无限循环?

function displayprofs()
{
print"<div>";
print "<p><a href = '$_SERVER[PHP_SELF]'>return to start</a>\n";
$abc=($_POST['abc']);
print"$abc";
$db = adodbConnect();
$query="Select * FROM Category WHERE Description LIKE '$abc%'";
$result=$db->Execute($query);
$row=$result->FetchRow();
while($row)
    {

      $name= $row['Description'];
      print "<form method='post' enctype='multipart/form-data' action='$_SERVER[PHP_SELF]'>\n";
      print"<input type='hidden' name='profy' value='$name'>";
      print"<p>$name<input type='submit' name='add' value ='Submit'/></p>\n";                                                   //submit button
      print"</form>\n";
      //break;
    } 
print"</div>";  
}
4

4 回答 4

4

您获取$row一次,然后开始while循环,其条件始终为真。$row=$result->FetchRow();在街区内失踪while

于 2012-12-15T10:52:37.730 回答
4

替换while($row)while($row=$result->FetchRow())

并删除$row=$result->FetchRow();你在开始之前写的while

于 2012-12-15T10:54:19.463 回答
0

既然你有while($row),你将一遍又一遍地迭代同一行。改为while($row=$result->FetchRow())改为并删除先前的 fetch 或保持原样并放在$row=$result->FetchRow();while 块的末尾。

解决方案1:

    while($row=$result->FetchRow())
    {

      $name= $row['Description'];
      print "<form method='post' enctype='multipart/form-data' action='$_SERVER[PHP_SELF]'>\n";
      print"<input type='hidden' name='profy' value='$name'>";
      print"<p>$name<input type='submit' name='add' value ='Submit'/></p>\n";                                                   //submit button
      print"</form>\n";
    }

解决方案2:

    $row=$result->FetchRow();
    while($row)
    {
      $name= $row['Description'];
      print "<form method='post' enctype='multipart/form-data' action='$_SERVER[PHP_SELF]'>\n";
      print"<input type='hidden' name='profy' value='$name'>";
      print"<p>$name<input type='submit' name='add' value ='Submit'/></p>\n";                                                      //submit button
      print"</form>\n";
      $row=$result->FetchRow();
    } 
于 2012-12-15T10:55:00.913 回答
0

到目前为止,您知道该while($row)位可能是一个错误。只是为了避免您不得不在一分钟内发布第二个问题:这不是最好的想法:

print "<form method='post' enctype='multipart/form-data' action='$_SERVER[PHP_SELF]'>\n";

也许考虑将其写

print "<form method='post' enctype='multipart/form-data' action='{$_SERVER['PHP_SELF']}'>\n";

print "<form method='post' enctype='multipart/form-data' action='".$_SERVER[PHP_SELF]."'>\n";
于 2012-12-15T10:57:39.823 回答