Php 在评论系统中获取回复

Php 在评论系统中获取回复,php,mysql,sql,comments,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 现在,我的情况是通过M

我正在开发一个评论系统,其中显示帖子、家长评论和回复孩子评论

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结果集打印评论信息。正是在尝试打印其他评论的子评论和帖子的父评论时

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

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

谢谢你的帮助


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

WHERE IN(parent_id list)

这将有效地按特定顺序从comments表中选择所有记录。这是您真正想做的吗?您可能想检查以下问题:。这是一种稍有不同的方法,但比每个注释回复一个新的数据库查询要有效得多。@DaveRandom不,并不是所有在生产环境中的方法都会返回限制数量的注释comment@martinCzerwi是的,这就是我要找的,如何从SQL限制结果中导出回复,例如:limit10@MohammadAhmad是,首先选择评论,当然,如果有正确的postid,则循环浏览评论,例如,如果回复超过10条,则显示最后10条或前10条回复,但是您希望……在这种情况下,您可以使用子查询来执行此操作,类似于SELECT*FROM comments WHERE parent_id IN SELECT comment_id FROM comments WHERE parent_id=null@DaveRandom这可以用在上面的情况下,也只是条件可能不同。这是一个非常好的,但仍然需要对每个评论进行查询。stackoverflow.com/q/937042/1627227这是一个查询,但限制结果存在问题