PHP中的无限查询/循环?

时间:2012-12-15 10:50:40

标签: php html mysql sql

您好我正在通过姓氏的第一个字母查询姓名数据库。但是,当我执行查询并打印结果时,第一个名称反复打印,而实际上有多个名称要打印出来。这是我到目前为止所拥有的。传入的数据是一个字母,在该字母中,它支持用起始字母收集所有姓氏。我做错了什么会导致这种无限循环?

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 个答案:

答案 0 :(得分:4)

您获取$row一次,然后启动while循环,其条件始终为true。在$row=$result->FetchRow();区块内遗漏while

答案 1 :(得分:4)

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

并删除您在开始$row=$result->FetchRow();

之前撰写的while

答案 2 :(得分:0)

由于你有while($row),你将一遍又一遍地遍历同一行。改为更改为while($row=$result->FetchRow())并删除之前的提取或按原样保留,并将$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();
    } 

答案 3 :(得分: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";