在评论系统中获得回复

时间:2013-01-02 13:09:29

标签: php mysql sql comments

我正在撰写评论系统,其中显示帖子,评论(家长评论)和评论回复(儿童评论)。

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

现在,我的情况是我通过My​​Sql结果集打印评论信息。正是在尝试打印子评论(其他评论的评论)和家长评论(帖子的评论)时。

我目前实现此目的的方法是选择所有没有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
         }
      }
}

?>

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

感谢您的帮助

一切顺利,

1 个答案:

答案 0 :(得分:1)

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

WHERE IN(parent_id list)