我不知道从哪里开始让我简单...
我有2个表格帖子和评论,帖子包含2个字段:id
和post_name
以及包含3个字段的评论:id
,comment
和{{1} }。我有一些帖子几乎没有评论。
如何使用while循环显示包含相关注释的所有帖子?
提前致谢....
答案 0 :(得分:2)
SELECT `p`.`post_name`, `c`.`comment`
FROM `posts` AS `p`
JOIN `comments` AS `c` ON(`p`.`id` = `c`.`post_id`)
GROUP BY `p`.`id`;
这将为您提供一个结果集,其中每行包含注释以及与该注释一起发布的帖子的名称。
答案 1 :(得分:2)
你需要一个嵌套循环来完成你想要的东西。这是一个应该帮助您入门的示例。
$posts_result = mysql_query("SELECT your, columns FROM poststable");
if(mysql_num_rows($posts_result) > 0){
$comments_result = mysql_query("SELECT comments FROM commentstable WHERE comments.post_id = $post_id");
while($post = mysql_fetch_array($posts_result){
// print post details
if(mysql_num_rows($comments_result) > 0){
while($comment = mysql_fetch_array($comments_result)) {
// print comment details
}
} else {
// print comments default for when there are no comments
}
} // End posts while
} else {
// print no posts found
}
答案 2 :(得分:0)
运行查询
select * from posts p, comments c where p.id=c.post_id group by p.id;
并迭代结果并根据需要显示它们。
答案 3 :(得分:-1)
这应该让你开始:
$sql = 'SELECT c.*, p.post_name FROM posts p INNER JOIN comments c ON p.id = c.post_id ORDER BY p.id DESC, c.post_id DESC';
$result = mysql_query($sql);
$previous_post = 0;
while ($data = mysql_fetch_assoc($result)) {
if ($previous_post != $data['post_id']) {
echo '<h1>' . $data['post_name'] . '</h1>';
$previous_post = $data['post_id'];
}
echo '<p>' . $data['comment'] . '</p>';
}