2014-01-22 30 views
2

我只是回到我的大網站項目,所以在我的php和mySQL學習中倒退了一步。我爲該網站創建了一些搜索引擎。當它沒有任何顯示內容時,我很努力讓它顯示「找不到結果」。出於某種原因,我無法檢測到這一點。它是保存多少條記錄的$ rows變量。即使它顯示時它顯示爲「0」,但在for循環內的if語句中似乎沒有這樣處理。當我做了一個var_dump它說int(0)。我究竟做錯了什麼?if語句不能在變量中檢測到0

$result=query($qstring, $db_hostname, $db_username, $db_password, $db_database); 

    $rows = mysql_num_rows($result); 

    echo 'Results found '.$rows; 

    for ($j = 0 ; $j < $rows ; ++$j) 
    { 
    $row = mysql_fetch_row($result); 
    if ($rows==0) 
    { 
     echo 'No results found'; 
    } 
    else 
    { 
     display_result($row[0],$row[1],$row[3],$row[4],$row[5]); 
    } 
    } 

回答

0

修復您的代碼:

$result=query($qstring, $db_hostname, $db_username, $db_password, $db_database); 

$rows = mysql_num_rows($result); 
if($rows>0) 
{ 
    echo 'Results found '.$rows;  
    for ($j = 0 ; $j < $rows ; ++$j) 
    { 
     $r= mysql_fetch_row($result); 
     display_result($r[0],$r[1],$r[3],$r[4],$r[5]); 
    } 
} 
else 
{ 
    echo "No results found"; 
} 

你可以試試這個也

$result=query($qstring, $db_hostname, $db_username, $db_password, $db_database); 

    $rows = mysql_num_rows($result); 
    if($rows>0) 
    { 
     echo 'Results found '.$rows; 
     while ($r= mysql_fetch_row($result)) 
     { 
      display_result($r[0],$r[1],$r[3],$r[4],$r[5]); 
     } 
     } 
    else 
    { 
     echo "No results found"; 
    } 
+1

謝謝!這是我第一次拋出一起後的第二次重寫,我似乎還記得我的第一個版本也有這個問題。它現在搜索很好,沒有結果時我沒有刺激的輸出;) –

+0

好的。如果您是初學者,那麼您可以訪問www.php.net獲取更多教程。 –

0

您的for循環將不會被輸入,因爲$ rows是0,所以您的if塊永遠不會到達。如果您將for循環更改爲while循環,它將自行遍歷您的結果,而不需要檢查$行。

試試這個辦法:

while($row = mysqli_fetch_row($result){ 
    // do stuff 
} 

而且你應該切換到mysqli的。它完全兼容。你基本上只是在你的代碼中添加'我'。

+0

是的,但如果$ rows爲0,則不會輸入for循環。 – ToBe

+0

這是正確的,但您的初始版本說了其他的東西。現在編輯。 :)(刪除我的評論(s)) –

+0

編輯答案澄清。 – ToBe

0

看看你的循環。你說$rowsint(0)。循環做了什麼?它使得$j=0,然後它繼續進行循環,直到條件$j < $rows爲假。除了...嘿,這個條件總是假的,所以它永遠不會循環。

for ($j = 0 ; $j < $rows ; ++$j) 
    { 
    #... 
    } 

要修復它,請檢查循環以外是否沒有結果。