Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.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 SQL联接收藏夹列表返回错误的名称_Php_Mysql_Sql_Select_Join - Fatal编程技术网

Php SQL联接收藏夹列表返回错误的名称

Php SQL联接收藏夹列表返回错误的名称,php,mysql,sql,select,join,Php,Mysql,Sql,Select,Join,我试图做一个相对简单的MySQL查询,返回用户添加的最喜欢的帖子。但是,我唯一的错误是favorites返回的帖子名是添加收藏夹的用户,而不是写帖子的实际用户。下面是我的收藏夹数据库,然后是下面的查询。如果您需要我提供更多信息,请告诉我,因为我很乐意以任何方式提供帮助 $username = $_GET['username']; //initial query $query = "SELECT body, latitude, longitude, (SELECT username FROM U

我试图做一个相对简单的MySQL查询,返回用户添加的最喜欢的帖子。但是,我唯一的错误是favorites返回的帖子名是添加收藏夹的用户,而不是写帖子的实际用户。下面是我的收藏夹数据库,然后是下面的查询。如果您需要我提供更多信息,请告诉我,因为我很乐意以任何方式提供帮助

$username = $_GET['username'];

//initial query
$query = "SELECT body, latitude, longitude, (SELECT username FROM Users WHERE Users.IDUser=Favorites.IDUser) AS username, (SELECT profile_picture FROM Users WHERE Users.IDUser=Favorites.IDUser) AS profile_picture, filename, post_date FROM Posts, Favorites WHERE Posts.IDPosts = Favorites.IDPosts AND Favorites.IDUser=(Select IDUser FROM Users WHERE Users.username=:username) ORDER BY post_date DESC";

$query_params = array(
        ':username' => $username
    );

数据库图:


!![在此处输入图像描述][2]

您应该已上载此问题的数据库架构,并且您应该已将查询格式化为更具可读性,但无论如何,我不知道这是否正确,我无法尝试,但请尝试,如果错误,请让我知道(我不知道我在做什么,因为我看不到模式,也不知道你想做什么)

选择主体、纬度、经度、Users.username、,
Users.profile\u图片、文件名、发布日期
来自帖子、收藏夹、用户
其中Users.username=:username和Posts.IDPosts=收藏夹.IDPosts
和Favorites.IDUser=Users.IDUser按发布日期描述的订单

编辑

 SELECT Users.profile_picture, Users.username, latitude, 
        longitude, post_date, filename
 FROM Users 
 JOIN Posts ON Posts.IDUser = Users.IDUser
 JOIN Favorites ON Posts.IDPosts = Favorites.IDPosts
     WHERE Users.username=:username 
           AND Users.IDUser = Posts.IDUser
           AND Posts.IDPosts = Posts.IDPosts

发布你的整个架构。很抱歉,但你这么说是什么意思?直接在mysql上测试你的查询!请格式化你的查询。目前,它是不可能读取的。在那之前,我投票支持结束,因为“不清楚你在问什么”我这样做了,但它的工作,但似乎只返回我的用户名为其他人的帖子。关闭,但它仍然会显示错误的用户名,如“测试从姆伯格”它是另一个作者。我将发布数据库的图表。请参见上面的图表。再试一次。我没有做任何测试,尽管它做了相同的事情。它将只显示设备用户的收藏夹用户名,包括最初不是他们的帖子,而不是其他用户标记的收藏夹的用户名。