我只是使用PDO中的rowCount()方法查找支持的数据库列表。我知道这听起来像是一个RFTM问题,但老实说,我找不到任何与它将使用哪些特定数据库有关的内容。我所知道的只是手册中的内容:
PDOStatement :: rowCount()返回受相应PDOStatement对象执行的最后一个DELETE,INSERT或UPDATE语句影响的行数。
如果关联的PDOStatement执行的最后一条SQL语句是SELECT语句,某些数据库可能会返回该语句返回的行数。但是,并不保证所有数据库都有这种行为,不应依赖于便携式应用程序。
我也知道这在MySQL中有效,并且不能在MS Server上运行,但是PDO支持的其他数据库呢?
答案 0 :(得分:0)
由于此记录的限制,并且认识到所有当前计算机都有大量内存,因此最便携且在大多数情况下最快的实现是发布$result = $stmt->fetchAll()
然后使用count($result)
。
在我看来,代码也看起来更干净,因为循环返回的值变为简单的foreach($result as $row)
。这是一个更快的实现,有两个原因:
fetchAll
,例如记录MySQL以在此情况下缓冲结果由于您几乎肯定会在完成对最终用户的响应之前阅读回复的每一行,为什么不通过一次调用驱动程序一次完成所有操作?以数据库独立方式为rowCount
实施SELECT
需要发出单独的SELECT COUNT(*)
请求。
驱动程序执行SELECT COUNT(*)
与实际SELECT
的工作量差不多,因此处理请求的时间会增加一倍。