php - 如何显示每篇文章的所有评论(PHP 和 SQL)?

标签 php mysql sql database mysqli

所以我有两个表,文章和评论(具有一对多关系(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/

相关文章:

php - 是否可以在一行中选择随机列?

MySQL 选择一个表中不在另一个表中的字段

sql - SQL如何修改XML中属性的首位?

php - 使用 HTML 表单更新 MySQL

php - 如何选择ID升序排列的多个表

php - 反复尝试使用 PHP 执行 MySQL 查询

房地产网站的Mysql数据库结构

mysql - 如何修改此查询以按匹配项排序?

SQL Server : case statement

java - JSP、SQL检索数据返回null