PDO行计数

PDO行计数

这里有许多相互矛盾的说法。在PHP中使用PDO进行计数的最佳方法是什么?在使用PDO之前,我只是简单地mysql_num_rows.

fetchAll这是我不想要的东西,因为有时我可能要处理大型数据集,所以对我的使用不好。

你有什么意见建议?


MYYA
浏览 557回答 3
3回答

拉丁的传说

$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;

小怪兽爱吃肉

正如我在前面写的对类似问题的回答,唯一的原因mysql_num_rows()之所以起作用,是因为它在内部获取所有行以提供信息,即使在您看来它并不像这样。因此,在PDO中,您的选择是:使用MySQL的FOUND_ROWS()功能。使用PDOfetchAll()函数将所有行提取到数组中,然后使用count()在上面。执行额外的查询SELECT COUNT(*),如Karim79所示。
打开App,查看更多内容
随时随地看视频慕课网APP