首页 文章

PDO rowCount()支持的数据库

提问于
浏览
2

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

PDOStatement :: rowCount()返回受相应PDOStatement对象执行的最后一个DELETE,INSERT或UPDATE语句影响的行数 . 如果关联的PDOStatement执行的最后一个SQL语句是SELECT语句,则某些数据库可能会返回该语句返回的行数 . 但是,并不保证所有数据库都有这种行为,不应依赖于便携式应用程序 .

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

1 回答

  • 0

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

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

    • 数据库驱动程序可以优化 fetchAll ,例如MySQL记录在这种情况下缓冲结果

    • 循环记录不涉及向脚本调用脚本 .

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

    驱动程序执行 SELECT COUNT(*) 作为实际的 SELECT 需要花费尽可能多的努力,因此您将加倍处理请求的时间 .

相关问题