【问题标题】:PDO rowCount only returning one [duplicate]PDO rowCount 仅返回一个 [重复]
【发布时间】: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();

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

谁能告诉我这是为什么?

【问题讨论】:

标签: php mysql pdo


【解决方案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。
    • 那个讨厌的谣言再次
    • 你可能想取消它,因为这篇论文没有。 stackoverflow.com/a/16776839/1570534
    猜你喜欢
    • 1970-01-01
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-12
    • 1970-01-01
    • 1970-01-01
    • 2015-02-24
    相关资源
    最近更新 更多