所以我以前看过这件事,但这是我的问题。我正在尝试查看用户是否发布了帖子,否则,我会显示一条消息。问题是我似乎从未收到消息。这是我的查询方式

    $posts = array();
    while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
        $posts[] =  array(
        'post_content' => $row['post_content'],
        'likes' => $row['post_likes'],
        'time' => $row['post_date'],
        'id' => $row['id']
    );
        }


以及我如何计算

<? if(count($posts) < 1): ?>
<h1>No posts</h1>
<? endif; ?>


没有错误,并且数据库中也没有记录。

最佳答案

这行:

while($row = $stmt->fetch(PDO::FETCH_ASSOC)){


在读取最后一行后,会将false分配给$row。尽管这不是一个数组,但接下来的几行将为$posts的下一个元素分配内容

因此,您将始终在$posts中至少获得一个元素,并且不会看到该消息。看到这个codepad

您应该测试fetch是否为假,如果没有,则仅对其进行处理。

将您的提取行更改为此:

while(($row = $stmt->fetch(PDO::FETCH_ASSOC)) !== false){

关于php - 获取计数的PHP结果返回,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24602038/

10-16 22:31