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 に答える