我在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&s=topic&t='.$topic_id.'&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&s=topic&t='.$topic_id.'&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&s=topic&t='.$topic_id.'&f='.$pid.'"><img src="./template/default/images/like.png" alt="" border="0"/></a><!-- END logged_in -->
</div>';
}
答案 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
进行迭代。