首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Num行返回错误的数字。

Num行返回错误的数字。
EN

Stack Overflow用户
提问于 2011-10-31 16:35:11
回答 2查看 792关注 0票数 2

当没有与SQL查询匹配的行时,Im试图计数有0行的行,但它无论如何返回1行。有人知道我做错了什么吗?

代码语言:javascript
复制
        $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();
        }
EN

回答 2

Stack Overflow用户

发布于 2011-10-31 16:37:21

查询总是返回一行。行包含行数。您应该使用mysql_fetch_row而不是mysql_num_rows,后者计算查询返回的行数。

代码语言:javascript
复制
$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
}

尽管解决问题的最简单方法是将查询更改为:

代码语言:javascript
复制
$sql6 = "SELECT * FROM oneliners WHERE id='$del' AND to_user='".$_SESSION['username']."'";

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

票数 4
EN

Stack Overflow用户

发布于 2011-10-31 16:38:24

您已经在sql查询中计数了。总有一排回来。即使数据库表中有零行。有两种方法可以做到:

  1. SELECT COUNT(*) FROM ...,仅此而已。不再需要mysql_num_rows()函数。如果您只想得到行数,那么这种方式就是quicker.
  2. SELECT * FROM ...,您可以使用mysql_num_rows()函数。如果您想获取表中显示的所有行并对它们进行计数,那么这是一种方法。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7956664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档