SQL只获得1行

时间:2013-05-18 16:27:10

标签: php

我在php中制作了一个类似的系统,我有一个代码,可以使用帖子ID获取喜欢帖子的人的所有用户名,如果他们不喜欢帖子,它会显示一个按钮,表示喜欢发布它如果它们没有它会显示一个按钮,说不像帖子,如果没有它会说“没有人喜欢这个帖子是第一个”。但是当我添加它时,它只获得1个用户ID,即使有多个人喜欢这个帖子,我该如何修复它,这是我的代码:

$fancy = $db->fetch("SELECT * FROM " . $prefix . "_fancy WHERE post_id = '" . $post_row['id'] . "' ORDER BY id");

if ($fancy) {
    $name = $user->name($fancy['account_id']);
    if ($account['id'] !== $fancy['account_id']) {
        $fancytext = '<div>'.$name.' Like this post.<!-- BEGIN logged_in --> <a href="./?area=forum&amp;s=topic&amp;t='.$topic_id.'&amp;f='.$pid.'"><img src="./template/default/images/like.png" alt="" border="0"/></a><!-- END logged_in -->
</div>';
    } else {
        $fancytext = '<div>'.$name.' Like this post.<!-- BEGIN logged_in --> <a href="./?area=forum&amp;s=topic&amp;t='.$topic_id.'&amp;unf='.$pid.'"><img src="./template/default/images/unlike.png" alt="" border="0"/></a><!-- END logged_in -->
</div>';
    }
} else {
    $fancytext = '<div><i>No one has liked this post, be the first!</i> <!-- BEGIN logged_in --><a href="./?area=forum&amp;s=topic&amp;t='.$topic_id.'&amp;f='.$pid.'"><img src="./template/default/images/like.png" alt="" border="0"/></a><!-- END logged_in -->
</div>';
}

1 个答案:

答案 0 :(得分:0)

使用预先准备的语句和fetchAll释放PDO 的强大功能

$sql = "SELECT * FROM $prefix_fancy WHERE post_id = :pid ORDER BY id";
$stmt = $db->prepare($sql);
$stmt->execute(array(':pid' => $post_row['id']));
$posts = $stmt->fetchAll(PDO::FETCH_ASSOC);

现在$posts包含您选择的所有记录。使用foreach进行迭代。