PHP MYSQL显示带注释的帖子

时间:2011-02-20 18:39:36

标签: php mysql

我不知道从哪里开始让我简单...

我有2个表格帖子和评论,帖子包含2个字段:idpost_name以及包含3个字段的评论:idcomment和{{1} }。我有一些帖子几乎没有评论。

如何使用while循环显示包含相关注释的所有帖子?

提前致谢....

4 个答案:

答案 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>';
}