Php 如何从MySQL中选择带有子注释的注释?
我有两张桌子: “评论”Php 如何从MySQL中选择带有子注释的注释?,php,mysql,Php,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 = '".$ge
| 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;
}
}
?>
将表本身连接起来
将查询更改为:
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."'
您不需要第二个查询,以下是完整代码:
只需使用a来获取注释,并与所有子项一起使用
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;
然后,您可以遍历结果以适当地打印它。这会更好,因为您只需运行一个查询。这部分中的逗号是什么:从评论中,用户
这是正确的语法还是拼写错误?更新了我的答案,请参见使用选择不同的..
删除重复的“选择DISTINCT comments.id、comments.content、users.name、users.photo FROM comments JOIN users ON comments.user\u id=users.id JOIN comments c ON comments.id=c.parent\u id WHERE comments.article\u id=”。$get\u id.““
I添加了左连接SELECT DISTINCT comments.id,comments.content,users.name,users.photo FROM comments JOIN users ON comments.user\u id=users.id左连接comments.id=c.parent\u-id WHERE comments.article\u-id=”。
现在输出顺序是:[id=1,parent\u-id=0],[id=2,parent\u-id=1],[id=4,parent\u-id=1],[id=3,parent\u id=0],[id=5,parent\u id=2],[id=6,parent\u id=1]
有点奇怪,请停止使用PHP的陈旧、不安全且不推荐使用的mysql\u API,然后使用什么?你能分享一些链接吗?使用MySQLi或更好的PDO