如何检查结果是否为($ row = mysql_fetch_array在PHP中

时间:2009-12-20 23:36:23

标签: php mysql

我试图找出如何处理这个没有返回结果,我将如何编码?

while($ row = mysql_fetch_array($ Result))

所以如果有结果:打印出来

else:显示链接

6 个答案:

答案 0 :(得分:13)

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
}

答案 1 :(得分:6)

您可以使用mysql_num_rows()告诉您找到了多少结果。使用简单的if-statement,您可以确定要采取的操作。

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

答案 2 :(得分:2)

其他人建议使用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重复设置为true似乎是多余的,但为变量赋值不应该是任何语言中的微不足道的费用。当然,与获取和处理SQL查询结果相比,它很小。

答案 3 :(得分:1)

使用更短的语法而不会无关紧要mysql_num_rows来节省处理器时间:

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

答案 4 :(得分:0)

我可能已经弄明白了:

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

答案 5 :(得分:0)

这可以在没有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子句中的一个)。