2

我正在尝试SELECT使用 PDO 计算从语句返回的行数。

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

谢谢

4

1 回答 1

2
  1. 永远不应使用此方法来计算数据库中的行数。如果您以后需要使用所有这些行,并且只想先计算它们,那也没关系。但永远不要只用它来计数。
  2. 人们必须选择他们需要的数据,而不是别的。如果您需要行数 - 然后选择行数,

    SELECT  count(1) FROM posts WHERE cat_id= ?
    

    然后使用fetchColumn()

  3. 至于代码中的特定错误 - 它似乎只是一个愚蠢的错字。很可能您不是在回显 $count_posts 而是 $rows (根据Array您提到的词判断)。
  4. 好吧,在您写完答案后看到问题的基本部分被编辑总是令人惊奇。
    如果您的计数为 0 - 所选类别下没有行,或者其他类似错字的错误
  5. 无论如何,您不应该选择所有表数据来仅获取计数
于 2013-04-07T10:23:04.670 回答