繁体   English   中英

MySQL在同一表上的多个联接在while循环中仅选择1行

[英]MySQL multiple joins on the same table selects only 1 row in while loop

表格“帖子”包含文章和对每篇文章发表评论的人员的最后3个用户ID(us1,us2,us3)。 我需要加入“ usertable”来获取最后评论发布者的名字。 这是我的查询:

$result = mysql_query("SELECT m.id, m.comment, m.us1, m.us2, m.us3,p.name,o.name,t.name,
FROM posts m 
LEFT JOIN usertable p ON m.us1=u.id
LEFT JOIN usertable o ON m.us2=u.id
LEFT JOIN usertable t ON m.us3=u.id   

where m.lid = '$pid' order by m.id desc limit 0,20")  or die('Error');

while(list($id, $comment, $us1, $us2, $us3, $name1, $name2, $name3) = mysql_fetch_row($result)) {
echo "$id<br />";
}

不幸的是,此结果的“回声”是:

79
79
79
79
79...

“ 79”是“帖子”表中最后一行的ID。 那么,为什么此查询的结果只是从“帖子”中选择一行?

当此图中没有表“ U”时,SQL引用“ u.id”存在问题。 尝试:

SELECT m.id, m.comment, m.us1, m.us2, m.us3, p.name, o.name, t.name
FROM posts m 
LEFT JOIN usertable p ON m.us1=p.id
LEFT JOIN usertable o ON m.us2=o.id
LEFT JOIN usertable t ON m.us3=t.id

另外,由于不推荐使用mysqli扩展名并很快将其删除,因此请切换到mysqli_ *函数而不是mysql_。 值得一看的是PDO。 在php.net上检查所有两个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM