所以我有两个表,文章和评论(具有一对多关系(1 篇文章 - 许多评论))。这是表格的结构:
文章 - id (prikey), title, publicationDate, content
评论 - com_id (prikey), author, comment, id (foreign key)
我用它来查询两个表:
SELECT * FROM articles as a INNER JOIN comments as c ON a.id = c.id
以前,我只使用这个来显示文章表:
<?php
while($row = mysqli_fetch_array($query)) {
echo "
<div id='article'>
<header>
<hgroup>
<h2>".$row['title']."</h2>
<h4>Posted on ".$row['publicationDate']."</h4>
</hgroup>
</header><p>".$row['content']."</p></div>";
}
?>
这会显示所有文章(包括日期、标题、内容等)。现在有评论了。我如何编辑 php 代码(或者如果我的查询不正确,如何编写查询),以便它显示所有文章和每篇文章的所有评论,如:
Article One
-- Comment 1
-- Comment 2, etc.
Article Two
-- Comment 1
-- Comment 2, etc.
最佳答案
另一种方法是将查询分成两部分。
第一个会带回你想要的文章...
SELECT * FROM article;
一旦你有了这些,你就可以得到所有的 ID 并使用类似下面的东西
SELECT * FROM comments WHERE article_id IN (".$list.");
这将 MySQL 查询限制为 2,同时获取您需要的所有数据。在文章数据循环之后,在该循环中,评论数据循环。
这也意味着,与使用 GROUP_CONCAT 不同,您还可以使用作者数据。
这不是一个非常有说服力的解决方案,但应该可行。
关于php - 如何显示每篇文章的所有评论(PHP 和 SQL)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7364377/