我正在撰写评论系统,其中显示帖子,评论(家长评论)和评论回复(儿童评论)。
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
}
}
}
?>
现在,我的问题是“有没有更好的方法来做同样的事情?”
感谢您的帮助
一切顺利,
答案 0 :(得分:1)
另一种方法是收集数组中的所有值,即在上面的情况下选择所有parent_id并使用
WHERE IN(parent_id list)