显示我关注的用户的帖子,但也显示我的帖子


Show posts from users that I follow, but show my posts too

我正在开发一个小网站,人们可以在这里互相关注。网站上有新闻推送,用户可以在这里看到他们关注的其他用户的更新。问题是,我只能看到其他用户的帖子,而不能看到我的帖子。我希望当前用户能够在其他用户的帖子中看到他的帖子。有点像Facebook墙。我已经尝试了很多不同的查询和php,但我只得到其他用户的帖子,或者当我设法提取我的帖子时,每个关注我的用户都有重复的帖子。

我有三张表"成员"、"张贴"answers"关注"。members表包含UserID、Name和Last Name。Post表包含索引到成员的UserID(表中的FromID)UserID和用户的帖子。下表中有3列FollowID、Followed和Follower,Followed与Follower都是成员UserID的索引。

目前我使用的查询是:

$query= "SELECT Post.*, members.*, follow.* FROM Post
 INNER JOIN members ON Post.FromID=members.UserID 
 LEFT JOIN follow ON members.UserID=follow.Followed
 WHERE Post.FromID='$user' OR follow.FollowerID='$user'
 ORDER BY Post.date DESC, Post.time DESC";

$user是当前登录用户的UserID。这个查询返回了我想要的所有帖子,但问题是,我的帖子对每个关注我的用户都显示了/n次

我真的很感激能给我一些指导我做错了什么的人。感谢

问题出在$user上。目前发生的情况是,在where子句中有一个OR条件。你试图获取你的数据或你的追随者数据。

我的解决方案是从您的查询中删除$user。所以你将只有追随者的数据列表。对你的帖子进行不同的查询,然后在显示时按日期时间戳对它们进行排序,这样你的帖子也会有其他关注者。

将您的帖子和后续帖子放在一个查询中。

使用活接头。类似:

(查询您的帖子ORDER BY日期)活接头(查询关注者发布ORDER BY日期);

还要检查w3schools中UNION的使用情况。

希望这能帮助

我认为这个查询可能更容易理解:

$query = "SELECT * FROM Post,members,follow 
WHERE 
Post.FromID=members.UserID
AND
members.UserID=follow.Followed

AND (    Post.FromID='$user' OR  follow.FollowerID='$user')    
ORDER BY Post.date DESC, Post.time DESC";