我试图找出如何处理这个没有返回结果,我将如何编码?
while($ row = mysql_fetch_array($ Result))
所以如果有结果:打印出来
else:显示链接
答案 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子句中的一个)。