mysql_num_rows 在没有行时不起作用

mysql_num_rows doesn't work when there are no rows

首先,是的,我知道 mysql_num_rows() 已被弃用。

现在,继续实际问题,我正在制作一个页面,用户可以在其中 post 东西,其他用户可以喜欢它们。但是当 post 显示时,并且查看它们的用户不 t/hasn 不喜欢 post,mysql_num_rows() 不起作用。

这是我的代码:

<?
$plikes=mysql_query("SELECT * FROM postLikes WHERE username='$myusername' AND postId='$postId'");
$plikesRows=mysql_num_rows($plikes)or die("error: ".mysql_error());
if ($plikesRows>=1) {
//stuff
}
else {
//other stuff
}
?>

变量 $myusername$postId 设置正确,我测试了查询,它没有任何错误。但是当我进入页面时,它只显示 "error:",没有任何错误。

那行代码没有按照您的想法进行。 mysql_num_rows($plikes) 变成了 0 ,它是 false 的类型,因此触发了 OR 语句的后半部分。发生这种情况是因为通过使用 OR 您将代码行的结果转换为布尔值评估。

$plikes=mysql_query("SELECT * FROM postLikes WHERE username='$myusername' AND postId='$postId'");
if (!mysql_error()) {
    $plikesRows=mysql_num_rows($plikes);
    if ($plikesRows>=1) {
    //stuff
    }
    else {
    //other stuff
    }
}
else {
    die("error: ".mysql_error());
}