簡體   English   中英

如何檢查結果是否為($ row = mysql_fetch_array在PHP中

[英]How to check if results on while($row = mysql_fetch_array in PHP

我試圖找出如何處理這是沒有返回結果,我將如何編碼?

while($ row = mysql_fetch_array($ Result))

所以,如果有結果:打印出來

否則:顯示一個鏈接

http://ca3.php.net/manual/en/function.mysql-num-rows.php

if(mysql_num_rows($result) > 0) {
   while($row = mysql_fetch_array($result)) { ... }
} else {
  // show link
}

您可以使用mysql_num_rows()告訴您找到了多少結果。 使用簡單的if-statement ,您可以確定要采取的操作。

if (mysql_num_rows($result) > 0) {
  // do while loop
} else {
  // show link
}

其他人建議使用mysql_num_rows()但您應該知道只有在使用緩沖查詢時該函數才有效。 如果使用mysql_unbuffered_query()查詢,則結果中的行數不可用。

我會使用一個簡單的標志變量:

$found_row = false;

while ($row = mysql_fetch_array($result)) {
  $found_row = true;
  . . .
}

if ($found_row == false) {
  // show link
}

重復地將$found_row設置$found_row true似乎是多余的,但是為變量分配文字值應該是任何語言中的微不足道的費用。 當然,與獲取和處理SQL查詢結果相比,它很小。

使用更短的語法而不會無關緊要的mysql_num_rows來節省處理器時間:

if($result) {
   // return db results
} else {
   // no result
}

我可能已經弄明白了:

if (!($row = mysql_fetch_array($descResult)))
     {
     echo "<tr><td>Add Link</td></tr>";
}

這可以在沒有mysql_num_rows()或附加(標志)變量的情況下完成

if ( false===($row=mysql_fetch_array($result, MYSQL_ASSOC)) ) {
  echo 'no rows in result set';
}
else {
  do {
    echo $row['X'];
  } while ( false===($row=mysql_fetch_array($result, MYSQL_ASSOC)) );
}

但它復制了實際的fetch命令(if語句中的一個和while子句中的一個)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM