我正在尝试使用PDO计算从SELECT
语句返回的行。
$stmt = $dbh->prepare("SELECT * FROM posts WHERE cat_id= ?");
$stmt->bindParam(1,$cat_id);
$stmt->execute();
$rows = $stmt->fetchAll();
$count_posts = count($rows);
return $count_posts;
我使用fetchAll()
,然后count()
计数,但它不工作。当我把这个回显出来,它回显0
。我认为数组是$rows
, $count_posts
将是该数组的计数?
echo $count_posts = count_cat_posts($cat_id);
谢谢
- 这个方法不应该用于计算数据库中的行数。如果您稍后需要使用所有这些行,并且只想先对它们进行计数,这是可以的。但千万不要只用它来计数。
-
必须选择他们需要的数据,而不是其他。如果需要行计数,请选择行计数,
SELECT count(1) FROM posts WHERE cat_id= ?
,然后使用
fetchColumn()
获取该数字 - 至于代码中的特定错误-它似乎只是一个愚蠢的打字错误。最有可能的是,您回显的不是$count_posts,而是$rows(根据您提到的
Array
这个词来判断)。 嗯,在你写完答案后,看到问题的关键部分被编辑,总是令人惊讶的。 - 无论如何,你不应该选择所有的表数据来获得计数
如果你有0作为计数-要么在选择的类别下没有行,要么不管另一个打字错误