使用PHP& amp;显示与帖子相关的评论MySQL的

时间:2012-07-21 07:28:02

标签: php sql select comments posts

我有一个页面显示与类别X相关的所有帖子。我无法显示与每个帖子相关的评论。

以下是相关的数据库表:

TABLE 'articles'
'article_id'
'title'
'article'
'updated'
'created'

TABLE 'categories'
'cat_id'
'category'

TABLE 'article2cat' (relates an article to a category using two primary keys)
article_id
cat_id

TABLE 'comments'
comment_id
comment
user
created

TABLE 'comment2article' relates a comment to an article using two primary keys)
comment_id
article_d

提取文章和评论的SQL查询是:

SELECT articles.article_id, articles.title, articles.article, DATE_FORMAT(articles.created, "%b, %Y") AS date_created, comments.comment_id, comments.user, comments.comment 
FROM articles INNER JOIN article2cat USING (article_id), comments INNER JOIN comment2article USING (comment_id)
WHERE cat_id=4
ORDER BY articles.created DESC;

显示文章和评论的代码是:

<table id="articles-table" cellpadding="0" cellspacing="0">
    <?php while ($row = $result->fetch_assoc()) { ?>
    <tr>
        <td id="articles-article">
            <div id="articles-article-internal">
                <?php echo format($row['article']); ?></div>
        </td>
    </tr>
    <tr>
        <td><?php echo $row['comment']; ?></td>
    </tr>
    <tr>
        <td>&nbsp;</td>
    </tr>
    <?php } ?>
</table>

问题是当我尝试仅回显与给定帖子/文章相关的评论时。目前它显示所有评论,无论他们属于哪个帖子。

我在StackOverflow上发现了几个类似的问题,但没有一个我可以用来解决我的问题。

1 个答案:

答案 0 :(得分:1)

分别选择文章和评论。查看查询结果。每个评论都会得到所有文章的副本。当评论数量增长时会发生什么?例如。你有一篇约5000个字符的文章。当您进行查询时,您将获得接近5000字节的数据。但如果你的文章有200条评论?查询结果大约是5000 * 200 +所有注释字节。

SELECT comments.*
FROM comments INNER JOIN comment2article USING (comment_id)
WHERE comment2article.article_d= ID of article
ORDER BY comments.created DESC;