我试图计算有0行的行,但是当没有与SQL查询匹配的行时,它仍会返回1行。有谁知道我做错了什么?
$del = mysql_real_escape_string(strip_tags($_GET['del']));
if ($del)
{
$sql6 = "SELECT count(*) FROM oneliners WHERE id='$del' AND to_user='".$_SESSION['username']."'";
$result6 = mysql_query($sql6) or trigger_error(mysql_error()."".$sql6);
$num_rows6 = mysql_num_rows($result6);
echo $sql6;
echo '<br>';
echo $num_rows6;
//If no rows return, do this
if ($num_rows6 <= 0)
{
header("location:oneliner.php");
exit();
}
答案 0 :(得分:4)
查询始终返回一行。该行包含行数。您应该使用mysql_fetch_row
而不是mysql_num_rows
,其中后者计算查询返回的行数。
$sql6 = "SELECT count(*) FROM oneliners WHERE id='$del' AND to_user='".$_SESSION['username']."'";
$result6 = mysql_query($sql6) or trigger_error(mysql_error()."".$sql6);
if($num_rows6 = mysql_fetch_row($result6)) {
echo $num_rows6[0]; // Prints the number of rows
}
即使解决问题的最简单方法是将查询更改为:
$sql6 = "SELECT * FROM oneliners WHERE id='$del' AND to_user='".$_SESSION['username']."'";
我强烈建议使用第一种替代方法,因为这种更简单的方法将返回所有行,因此效率较低。
答案 1 :(得分:3)
你在sql查询中已经在计算了。那总是一行回归。即使数据库表中的行数为零。有两种方法可以做到:
SELECT COUNT(*) FROM ...
就是这样。不再需要mysql_num_rows()
功能。如果您只想获得行数,那么这种方式会更快。SELECT * FROM ...
您可以使用mysql_num_rows()
功能。如果你想要在表格中显示所有行并计算它们,那么这是一种方法。