PDO显然无法计算从选择查询返回的行数(mysqli
具有num_rows
变量)。
有没有办法做到这一点,没有使用count($results->fetchAll())
?
答案 0 :(得分:12)
根据手册,有PDOStatement->rowCount
方法;但不应该使用(引用):
对于大多数数据库,
PDOStatement::rowCount()
没有 返回受影响的行数 一个SELECT
声明。
相反,使用PDO::query()
发布SELECT COUNT(*)
语句 谓词是您的预期SELECT
声明,然后使用PDOStatement::fetchColumn()
来 检索将要的行数 被退回你的申请可以 执行正确的操作。
如果您已有记录集,并且想知道其中有多少行,则必须使用fetch*
方法之一获取数据;并使用计数 - 就像你建议的那样。
答案 1 :(得分:3)
虽然PDO显然有办法计算从mysql的select查询返回的行数,但更重要的是首先对这样的函数有没有用。
每次有想法将rowCount()用于SELECT查询时,它都是多余的甚至是有害的。见PDO rowCount():
答案 2 :(得分:0)
可能更接近num_rows
中的mysqli
变量和相应的C API函数mysql_num_rows()
的另一个选项。是使用返回相同信息的MySQL函数FOUND_ROWS()
,而不必再次计算结果中的所有记录。
示例:
$pdoDB->query('SELECT FOUND_ROWS()')->fetchColumn()
答案 3 :(得分:-2)
最简单
$stmt = $datalink->query('SELECT * FROM projects');
$rows = $stmt->fetchAll();
$num_rows = count($rows);
echo $num_rows ;