繁体   English   中英

行数返回错误的数字

[英]Num rows returns wrong number

我试图计算有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();
        }

查询总是返回一行。 该行包含行数。 您应该使用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']."'";

我强烈建议使用第一个替代方法,因为这种更简单的方法将返回所有行,因此效率较低。

您已经在sql查询中计数了。 那总是返回一行。 即使数据库表中的行为零。 有两种方法:

  1. SELECT COUNT(*) FROM ...就这样。 不再需要mysql_num_rows()函数。 如果您要做的只是获取行数,则这种方法会更快。
  2. SELECT * FROM ...然后可以使用mysql_num_rows()函数。 如果您想获取所有要在表中显示的行并进行计数,那么这是一种方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM