为了账号安全,请及时绑定邮箱和手机立即绑定

PDO行计数

PDO行计数

MYYA 2019-06-14 10:31:34
PDO行计数这里有许多相互矛盾的说法。在PHP中使用PDO进行计数的最佳方法是什么?在使用PDO之前,我只是简单地mysql_num_rows.fetchAll这是我不想要的东西,因为有时我可能要处理大型数据集,所以对我的使用不好。你有什么意见建议?
查看完整描述

3 回答

?
拉丁的传说

TA贡献1789条经验 获得超8个赞

$sql = "SELECT count(*) FROM `table` WHERE foo = bar"; $result = $con->prepare($sql); $result->execute();
 $number_of_rows = $result->fetchColumn();

这不是最优雅的方法,而且还需要额外的查询。

PDOPDOStatement::rowCount(),这显然是在MySQL工作。好痛啊。

来自PDO医生:

对于大多数数据库,PDOStatement:rowCount()不返回受SELECT语句影响的行数。相反,使用PDO:query()发出一个SELECT(*)语句,其谓词与预期的SELECT语句相同,然后使用PDOStatement:getchColumn()检索将要返回的行数。然后,应用程序可以执行正确的操作。

编辑:上面的代码示例使用了一个准备好的语句,在许多情况下,这对于计数行可能是不必要的,因此:

$nRows = $pdo->query('select count(*) from blah')->fetchColumn(); echo $nRows;


查看完整回答
反对 回复 2019-06-14
?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

正如我在前面写的对类似问题的回答,唯一的原因mysql_num_rows()之所以起作用,是因为它在内部获取所有行以提供信息,即使在您看来它并不像这样。

因此,在PDO中,您的选择是:

  1. 使用MySQL的

    FOUND_ROWS()

    功能。
  2. 使用PDO

    fetchAll()

    函数将所有行提取到数组中,然后使用

    count()

    在上面。
  3. 执行额外的查询

    SELECT COUNT(*)

    ,如Karim79所示。


查看完整回答
反对 回复 2019-06-14
  • 3 回答
  • 0 关注
  • 556 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信