2012-12-15 35 views
0

你好我正在查詢姓氏的第一個字母的名稱數據庫。但是,當我執行查詢並打印結果時,如果實際上打印出多個名稱,則會重複打印名字。這是我到目前爲止。傳入的數據是一個字母,它用來表示收集所有姓氏的開頭字母。我做錯了什麼可能導致這個無限循環?PHP中的無盡查詢/循環?

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>"; 
} 
+1

爲什麼'Java'標籤在這裏? –

+0

對不起,這是一個autocorrect錯誤 – user1902588

+0

' while($ row = $ result-> FetchRow())'而不是'while($ row)'並刪除'$ row = $ result-> FetchRow()' –

回答

4

你獲取了$row一次,然後開始while環,其條件總是如此。在while區塊內缺少$row=$result->FetchRow();

+0

嗨我替換它,它仍然給我無限循環,它也崩潰了我的瀏覽器。 – user1902588

+0

沒關係現在它的作品!謝謝 – user1902588

4

更換while($row)while($row=$result->FetchRow())

,並開始while

0

之前刪除你寫$row=$result->FetchRow();既然你有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(); 
    } 
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";