PDO rowCount 仅返回一个 [重复]

Posted

技术标签:

【中文标题】PDO rowCount 仅返回一个 [重复]【英文标题】:PDO rowCount only returning one [duplicate] 【发布时间】:2017-03-14 07:24:04 【问题描述】:

我有一个 SELECT 查询,如下所示:

$stmnt = $conn->prepare("SELECT post_title, posts_cat FROM posts WHERE posts_cat=:posts_cat");
$stmnt->execute(array(':posts_cat' => $cat_id));
$post_info = $stmnt->fetch();
$count = $stmnt->rowCount();

如果没有帖子,则显示无,但如果有一个或多个,则仅显示一个。

谁能告诉我这是为什么?

【问题讨论】:

使用 PDO 的 fetchAll() 函数将所有行提取到数组中 php.net/manual/en/… 中的示例 2 【参考方案1】:

当然你得到了正确的返回行数。 1 表示只找到一行。如果您想找到更多行,请向数据库中添加更多行以匹配条件。

您是否需要这样的功能 - 是另一个问题,已经回答in this post

【讨论】:

【参考方案2】:

请不要在选择查询中使用rowCount()count() 使用不同的查询来计算行数

$sql = "SELECT count(*) FROM `posts` WHERE posts_cat = :posts_cat"; 
$stmnt = $conn->prepare($sql); 
$stmnt->execute(array(':posts_cat' => $cat_id)); 
$count = $stmnt->fetchColumn(); 

【讨论】:

错误的答案和绝对错误的投票。 @Rajesh Patel 非常感谢。我有一个问题 whiteout using $stmnt->fetchAll(); cant you directly use $stmnt->rowCount(); like in mysqli num_rows? 感谢@HankyPanky,非常感谢我不知道 不客气!如果您编辑答案以反映我将能够取消我的反对票。目前我不能,因为它被锁定了【参考方案3】:

PDOStatement::rowCount() 返回受相应 PDOStatement 对象执行的最后一个 DELETE、INSERT 或 UPDATE 语句影响的行数。

rowCount() 不适用于 SELECT 查询,请使用单独的 COUNT 查询或获取数组中的所有行和 count 其大小

【讨论】:

感谢您的回答。将 SELECT COUNT 与 fetchColumn 一起使用是否正确? 是的,这样做很好 好的,非常感谢。我只是从 MySQLi 迁移到 PDO。 那个讨厌的谣言再次 你可能想取消它,因为这篇论文没有。 ***.com/a/16776839/1570534

以上是关于PDO rowCount 仅返回一个 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

PHP PDO Update语句总是返回0行受影响的rowCount()

PHP PDO rowCount 在 SELECT 语句上返回 -1

PDO rowCount() 支持的数据库

PDO 的 rowCount() 不适用于 PHP 5.2.6+

Php pdo rollBack() 不适用于更新语句

怎么用PDO得知数据库中某个表的总行数