Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.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:我从一行中得到多行_Php_Mysql_Sql_Rows - Fatal编程技术网

Php MYSQL:我从一行中得到多行

Php MYSQL:我从一行中得到多行,php,mysql,sql,rows,Php,Mysql,Sql,Rows,所以我试图得到一排朋友的msg,但我得到的是一个msg的多行。所以我做了一些研究,但我找不到任何关于它的东西,只有相反的方法 现在,在用户向我发送此查询后,我遇到了第二个问题: SELECT msg, userpost_ID, created, userone_ID, usertwo_ID, accepted FROM friendship, Posts WHERE friendship.userone_ID = '13' AND (Posts.userpost_ID = friendshi

所以我试图得到一排朋友的msg,但我得到的是一个msg的多行。所以我做了一些研究,但我找不到任何关于它的东西,只有相反的方法

现在,在用户向我发送此查询后,我遇到了第二个问题:

SELECT msg, userpost_ID, created, userone_ID, usertwo_ID, accepted 
FROM friendship, Posts 
WHERE friendship.userone_ID = '13' AND (Posts.userpost_ID = friendship.usertwo_ID OR Posts.userpost_ID = '13')
现在我已经使用了连接语法,但在查询中显示了相同的问题:

SELECT P.msg, P.userpost_ID, P.created,
   F.userone_ID, F.usertwo_ID, F.accepted, U.fname, U.lname FROM Posts P JOIN friendship F ON F.userone_ID = '13' JOIN Users U ON U.ID = F.usertwo_ID

您必须在

SELECT 
   msg, 
   userpost_ID, 
   created, 
   userone_ID, 
   usertwo_ID, 
   accepted 
FROM 
   friendship, 
   Posts 
WHERE 
      friendship.userone_ID = '13'
  AND (Posts.userpost_ID = friendship.usertwo_ID 
  OR Posts.userpost_ID = '13')

也可以使用现代的explizite join,而不是使用where来implizit,您在查询中有错误,只需使用下面的查询即可获得准确的结果,或者只需在或条件中添加括号即可

SELECT 
   msg, 
   userpost_ID, 
   created, 
   userone_ID, 
   usertwo_ID, 
   accepted 
FROM 
   friendship, 
   Posts 
WHERE 
   friendship.userone_ID = '13'
   AND (Posts.userpost_ID = friendship.usertwo_ID 
   OR Posts.userpost_ID = '13')
希望这对你有帮助

感谢和问候

切勿在
FROM
子句中使用逗号。始终使用正确、明确的
JOIN
语法。这几乎可以解决您的问题:

SELECT . . .
FROM friendship f JOIN
     Posts p
     ON p.userpost_ID = f.usertwo_ID 
WHERE f.userone_ID = 13;
注:

  • 如果您还需要用户的消息,您只需要
    p.userpost\u ID=13
  • 表别名使查询更易于编写和读取
  • 您应该限定所有列名(指定它们来自的表)

请将SQL语句作为文本而不是图像发布抱歉,我在发布几秒钟后看到了它。我在寻找我的错!你知道哪里的陈述是错误的。最后一个
不正确,因为现在您的查询显示每个帖子都带有
userpost\u id
13,这是因为我也想显示用户自己的帖子。现在查看我的编辑,我遇到了第二个问题。它仍然从id为13的一条消息中生成多条消息。很抱歉,我从未使用连接语法,我需要将语法放在哪里?如果我想用的话。