簡體   English   中英

如何從MySQL選擇帶有子注釋的注釋?

[英]How to select comments with child comments from MySQL?

我有兩個表:

'評論'

| id | content | user_id | article_id | parent_id |

“用戶”

| id | name | photo |

我的查詢是:

<?php
$query = mysql_query("SELECT comments.id, comments.content, users.name, 
users.photo FROM comments, users WHERE comments.article_id = '".$get_id."' 
AND comments.parent_id = 0 AND comments.user_id = users.id");
while($res = mysql_fetch_assoc($query))
{
  $id = $res['id'];
  $content = $res['content'];
  $name = $res['name'];
  $photo = $res['photo'];

  echo $photo;
  echo $name;
  echo $content;

  $query2 = mysql_query("SELECT comments.id, comments.content, users.name, 
  users.photo FROM comments, users WHERE comments.article_id = '".$get_id."' 
AND comments.parent_id = '".$id."' AND comments.user_id = users.id");
  while($res2 = mysql_fetch_assoc($query2))
  {
    $id2 = $res2['id'];
    $content2 = $res2['content'];
    $name2 = $res2['name'];
    $photo2 = $res2['photo'];

    echo $photo2;
    echo $name2;
    echo $content2;
  }
}
?>

它不能正常工作。 盡管有多個子注釋,但每個嵌套中顯示1個父注釋和1個子注釋。

如何解決並最小化它? 是否可以僅使用一個查詢來完成?

謝謝!

JOIN本身的表。

將查詢更改為:

SELECT comments.id, comments.content, users.name, 
users.photo FROM comments JOIN users ON comments.user_id = users.id JOIN 
comments c ON comments.id = 
c.parent_id  WHERE 
comments.article_id = '".$get_id."' 
AND comments.parent_id = '".$id."'

您不需要第二個查詢,這是完整的代碼:

<?php

$query = mysql_query("SELECT comments.id, comments.content, users.name, 
users.photo FROM comments JOIN users ON comments.user_id = users.id JOIN 
comments c ON comments.id = 
c.parent_id  WHERE 
comments.article_id = '".$get_id."'");

while($res = mysql_fetch_assoc($query))
{
  $id = $res['id'];
  $content = $res['content'];
  $name = $res['name'];
  $photo = $res['photo'];

  echo $photo;
  echo $name;
  echo $content;
 } 

?>

只需使用JOIN即可獲取注釋以及所有子項。

SELECT users.id userID, users.name, users.photo , childrenComments.*,   
   parentComments.id cpId, parentComments.content cpContent,
   parentComments.user_id cpUser_id,parentComments.article_id cpArticleId
FROM users JOIN (SELECT * FROM Comment WHERE id=0) parentComments 
ON users.id=parentComments.user_id LEFT JOIN Comment childrenComments
ON parentComments.id=childrenComments.parent_id;

然后,您可以遍歷結果以適當地打印它。 這樣會更好,因為您只需要運行一個查詢即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM