【问题标题】:PDO count is returning same valuePDO 计数返回相同的值
【发布时间】:2014-03-14 15:06:03
【问题描述】:

我是 PDO 的新手,我正在尝试使用下面的代码来获得与使用“mysql_num_rows”在 mysql 中获得的相同的值,但这会返回“1”,而它应该返回“0”:

下面的函数返回“1”,它应该返回“0”

public function countdata($field, $table, $where = "1") {
    $ar = $this->pdo->prepare("SELECT COUNT(`" . $field . "`) FROM `" . $table . "` WHERE " . $where . "");
    $ar->execute();
    $cnt=$ar->fetchColumn();
    return $cnt;
}

【问题讨论】:

  • 你的意思是上面的代码返回1?或者 mysql_num_rows,因为你知道 COUNT() 和 mysql_num_rows 之间有区别吗?见stackoverflow.com/questions/3772791/…
  • PDO 具有行计数功能
  • 我认为你的代码是正确的,所以这不是问题。

标签: php


【解决方案1】:

这个问题,以及它背后的迷信,是duplicate

您实际上既不需要mysql_num_rows,也不需要rowCount,也不需要您的这个insecure函数。我不得不承认,它写得很好——比这里发布的通常内容要好得多。但它有一个根本缺陷——它不支持预准备语句——毕竟这是使用 PDO 的唯一原因。

而且,正如上面提到的 - 它只是无用的。如果你仔细想想,你会发现每次你想从这样的功能中得到一些东西,你已经拥有了。

【讨论】:

    【解决方案2】:

    这个灵魂的工作:

    public function countdata($field, $table, $where = "1") {
    $ar = $this->pdo->prepare("SELECT COUNT(`" . $field . "`) FROM `" . $table . "` WHERE " . $where . "");
    $ar->execute();
    $cnt=$ar->rowCount();
    return $cnt;
    

    }

    【讨论】:

    • 你确定吗?因为它看起来会返回 1,因为 SELECT COUNT() SQL 将只返回一行和一个值,这将是行数。
    • 我没看查询,我的错
    猜你喜欢
    • 2018-08-07
    • 2017-05-09
    • 2014-02-05
    • 2018-11-12
    • 1970-01-01
    • 1970-01-01
    • 2015-03-17
    • 2021-11-30
    • 1970-01-01
    相关资源
    最近更新 更多