0

我正在开发评论系统,其中显示帖子、评论(父评论)和评论回复(子评论)。

MySql 评论表如下所示:

comment_id int primary_key
post_id int // where i save the post id 
author varchar
comment text
parent_id int // where i save parent comment id in case this comment is reply of another comment

现在,我的情况是当我通过 MySql 结果集打印评论信息时。正是在尝试打印子评论(其他评论的评论)和父评论(帖子的评论)时。

我目前实现这一点的方法是选择所有没有 parent_id 的评论

SELECT * FROM comments WHERE parent_id = null 

并使用 PHP 循环所有结果,然后在循环内为每个评论搜索是否有任何子评论进行另一个查询。

<?php

$sql_result_set;

while($comment = mysql_fetch_array($sql_result_set, MYSQL_ASSOC){
      // process comment info 
      $sql = "SELECT * FROM comments where parent_id = ".$comment['comment_id'];
      $result = mysqli_query($sql);
      if(mysql_num_rows($result)>0){
         while($child_comments = mysql_fetch_array($result, MYSQL_ASSOC)){
               // child comments of the parent
         }
      }
}

?>

现在,我的问题是“有没有更好的方法来做同样的事情?”

感谢您的帮助

祝一切顺利,

4

1 回答 1

1

另一种方法是收集数组中的所有值,即在上述情况下选择所有 parent_id 并使用

WHERE IN(parent_id list)
于 2013-01-02T13:18:47.707 回答