Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 同一个表上的MySQL多个联接只选择while循环中的一行_Php_Mysql_Left Join - Fatal编程技术网

Php 同一个表上的MySQL多个联接只选择while循环中的一行

Php 同一个表上的MySQL多个联接只选择while循环中的一行,php,mysql,left-join,Php,Mysql,Left Join,表“posts”包含文章和对每篇文章发表评论的人的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.

表“posts”包含文章和对每篇文章发表评论的人的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”是“posts”表中最后一行的ID。那么,为什么这个查询的结果只有一行是从“posts”中选择的呢?

当这个图片中没有表“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

另外,由于mysql扩展已被弃用,并且很快将被删除,请切换到mysqli_*函数而不是mysql_*函数。这也值得一看PDO。请在php.net上查看这两个选项。

这个表别名“u”是什么(m.us1=u.id,m.us2=u.id,m.us3=u.id)?不,您可能只是盯着它看了太久。这就是stack exchange的目的,一双全新的眼睛。
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