Php 显示追随者和登录用户的帖子
我想使用一个PHP mysql查询显示被跟踪用户和登录用户的帖子 我有三张桌子:Php 显示追随者和登录用户的帖子,php,mysql,Php,Mysql,我想使用一个PHP mysql查询显示被跟踪用户和登录用户的帖子 我有三张桌子: -用户(id、名称、密码) -帖子(id、正文、日期、用户id) -追随者(id、用户id、追随者id) followers.follower_id=执行以下操作的人员 followers.user_id=被跟踪的人 $\u会话['id']=已登录用户的id DB::query(' SELECT users.name, posts.body FROM users, posts, followers WHERE
-用户(id、名称、密码)
-帖子(id、正文、日期、用户id)
-追随者(id、用户id、追随者id) followers.follower_id=执行以下操作的人员
followers.user_id=被跟踪的人
$\u会话['id']=已登录用户的id
DB::query('
SELECT users.name, posts.body
FROM users, posts, followers
WHERE posts.user_id = followers.user_id
AND users.id = posts.user_id
AND followers.follower_id = :userid',
array(':userid'=>$_SESSION['id'])
);
但是查询只显示被跟踪用户的帖子,而不是登录用户的帖子。我该如何解决这个问题
我已经在posts表和users表之间创建了一个关系
CREATE TABLE `posts` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`body` varchar(160) NOT NULL DEFAULT '',
`user_id` int(11) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`),
CONSTRAINT `posts_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
您需要在
WHERE
子句中包含两个条件:帖子的创建者匹配您的:userid
变量,或者跟随者匹配您的:userid
请使用当前的联接语法:这使您的查询更易于阅读
您的最终查询应该是这样的(我不包括PHP部分):
哪个表跟踪登录状态?如果您希望在尽可能短的时间内找到最佳解决方案,请通过发布包含相关表和足够数量样本数据的sqlfiddle演示来提供完整、可验证的问题。这样,志愿者就不必浪费任何时间来模拟您的表格来测试他们建议的查询。
SELECT users.name, posts.body
FROM posts
INNER JOIN users ON
users.id = Posts.user_id
-- use left join to handle when a
-- user has no followers
LEFT JOIN Followers ON
Followers.user_id = users.user_id
WHERE
users.id = :userid
OR followers.follower_id = :userid