gpt4 book ai didi

php - 显示关注者和登录用户的帖子

转载 作者:行者123 更新时间:2023-11-29 17:01:39 25 4
gpt4 key购买 nike

我想使用单个 PHP mysql 查询来显示被关注的用户和登录用户的帖子。

我有三张 table :
- 用户(ID、姓名、密码)
- 帖子(id、正文、日期、user_id)
- 关注者(id、user_id、follower_id)

followers.follower_id = 执行以下操作的人
followers.user_id = 被关注的人
$_SESSION['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 子句中包含 2 个条件:帖子的创建者与您的 :userid 变量匹配,或者关注者与您的 :userid 匹配.

请使用当前的联接语法:这使您的查询更易于阅读。

您的最终查询应该是这样的(我排除了 PHP 部分):

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

关于php - 显示关注者和登录用户的帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52184772/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com