如何在PHP中检查while($row=mysql\u fetch\u数组)上的结果

如何在PHP中检查while($row=mysql\u fetch\u数组)上的结果,php,mysql,Php,Mysql,我正在试图找出如何处理这个问题,如果没有返回结果,我将如何编写代码 while($row=mysql\u fetch\u数组($Result)) 就像有结果一样:打印出来 else:显示一个链接,您可以使用该链接告诉您找到了多少个结果。使用一个简单的if语句,您可以确定要采取的操作 if (mysql_num_rows($result) > 0) { // do while loop } else { // show link } 我可能已经弄明白了: if (!($row =

我正在试图找出如何处理这个问题,如果没有返回结果,我将如何编写代码

while($row=mysql\u fetch\u数组($Result))

就像有结果一样:打印出来

else:显示一个链接

,您可以使用该链接告诉您找到了多少个结果。使用一个简单的
if语句
,您可以确定要采取的操作

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


我可能已经弄明白了:

if (!($row = mysql_fetch_array($descResult)))
     {
     echo "<tr><td>Add Link</td></tr>";
}
if(!($row=mysql\u fetch\u数组($descResult)))
{
回显“添加链接”;
}

其他人建议使用
mysql\u num\u rows()
,但您应该知道,只有使用缓冲查询时,该函数才有效。如果使用
mysql\u unbuffered\u query()
进行查询,则结果中的行数不可用

我将使用一个简单的标志变量:

$found_row = false;

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

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

重复将
$found\u row
设置为true似乎是多余的,但在任何语言中,为变量指定一个文本值都应该是微不足道的开销。当然,与获取和处理SQL查询结果相比,这是很小的。

这可以在没有mysql\u num\u rows()或附加(flag)变量的情况下完成


但它复制了实际的fetch命令(一个在if语句中,一个在while子句中)。

使用更短的语法,而不使用不重要的
mysql\u num\u行
以节省处理器时间:

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

只是想知道-如果函数失败或没有结果,那么该函数的结果值是否总是错误的?如果是,可以忽略大于0的值(我一直都有,但从未深入考虑过可能的返回值)+1“返回值:成功时结果集中的行数,失败时为FALSE。”如果确实没有结果,这可能会返回
0
,但是如果函数失败,则返回
false
。非常好。工作得很好,比我发现的要好。语言应该有一个结构来避免这个问题,因为它是如此常见。类似于
while($cond){$action}else{$code}
@Mark:Python有一个while/else构造。
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)) );
}
if($result) {
   // return db results
} else {
   // no result
}