PDO rowCount()支持的数据库

时间:2015-04-25 11:00:24

标签: php mysql database pdo

我只是使用PDO中的rowCount()方法查找支持的数据库列表。我知道这听起来像是一个RFTM问题,但老实说,我找不到任何与它将使用哪些特定数据库有关的内容。我所知道的只是手册中的内容:

  

PDOStatement :: rowCount()返回受相应PDOStatement对象执行的最后一个DELETE,INSERT或UPDATE语句影响的行数。

     

如果关联的PDOStatement执行的最后一条SQL语句是SELECT语句,某些数据库可能会返回该语句返回的行数。但是,并不保证所有数据库都有这种行为,不应依赖于便携式应用程序。

我也知道这在MySQL中有效,并且不能在MS Server上运行,但是PDO支持的其他数据库呢?

1 个答案:

答案 0 :(得分:0)

由于此记录的限制,并且认识到所有当前计算机都有大量内存,因此最便携且在大多数情况下最快的实现是发布$result = $stmt->fetchAll()然后使用count($result)

在我看来,代码也看起来更干净,因为循环返回的值变为简单的foreach($result as $row)。这是一个更快的实现,有两个原因:

  • 数据库驱动程序可以优化fetchAll,例如记录MySQL以在此情况下缓冲结果
  • 通过记录循环不会涉及到脚本调用驱动程序。

由于您几乎肯定会在完成对最终用户的响应之前阅读回复的每一行,为什么不通过一次调用驱动程序一次完成所有操作?以数据库独立方式为rowCount实施SELECT需要发出单独的SELECT COUNT(*)请求。

驱动程序执行SELECT COUNT(*)与实际SELECT的工作量差不多,因此处理请求的时间会增加一倍。