如果MySQL没有返回任何行,它会返回什么结果?

3

我有这段PHP代码:

$query = "SELECT name, COUNT(message) FROM guestbook_message WHERE name='".$req_user_info['username']."' GROUP BY name"; 

$result = mysql_query($query) or die(mysql_error());

while($row = mysql_fetch_array($result))
{
    echo "Messages posted: ". $row['COUNT(message)'] ."";
    echo "<br />";
}

这将显示用户发布的评论数量。

如果该用户没有发布任何消息,我该如何返回一个值?目前它根本不显示任何内容。但我希望它显示“已发布的消息:0”

有什么想法吗?

3个回答

9

使用mysql_num_rows检查结果中返回的数量。

$query = "SELECT name, COUNT(message) FROM guestbook_message WHERE name='".$req_user_info['username']."' GROUP BY name"; 

$result = mysql_query($query) or die(mysql_error());

if(mysql_num_rows($result) > 0)
    while($row = mysql_fetch_array($result))
    {
       echo "Messages posted: ". $row['COUNT(message)'] ."";
       echo "<br />";
    }
else
    echo "NO Messages posted. <br />";

2
如果结果为0行,则会发出警告!PHP警告:mysql_num_rows()期望参数1为资源,但实际得到的是布尔值... - Tieme

1
if ($row = mysql_fetch_array($result)) {
    echo "Messages posted: ". $row['COUNT(message)'] . "";
    echo "<br />";
}
else {
    echo "Messages posted: 0";
    echo "<br />";
}

谢谢mellamokb!我还忘了在WHERE子句中加上AND deleted。今天真是漫长的一天... - Tom

0

使用三目运算符替换$row['COUNT(message)']

( $row['COUNT(message)'] > 0 ? $row['COUNT(message)'] : 0 )

这基本上是一个紧凑的 if...else... 语句。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接