0

我正在用 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>';
}
4

1 回答 1

0

使用准备好的语句释放PDO 的力量,fetchAll并且:

$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迭代。

于 2013-05-18T16:44:39.367 回答