gpt4 book ai didi

php - 从 buddys、friends 和 users 表中获取数据

转载 作者:行者123 更新时间:2023-11-30 23:17:41 25 4
gpt4 key购买 nike

我一直在尝试为 session 用户获取 friend 提要。但我最终要么一无所获,要么仍然每个人都能看到。

表格格式 http://pastebin.com/XGYmpi5u

CREATE TABLE IF NOT EXISTS `users` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(32) NOT NULL,
`password` varchar(32) NOT NULL,
`first_name` varchar(32) NOT NULL,
`last_name` varchar(32) NOT NULL,
`email` varchar(1024) NOT NULL,
`active` int(11) NOT NULL DEFAULT '0',
`email_code` varchar(32) NOT NULL,
`avatar` varchar(55) NOT NULL,
`type` int(1) NOT NULL DEFAULT '0',
`protected` int(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;

CREATE TABLE IF NOT EXISTS `feeds` (
`id` int(6) NOT NULL AUTO_INCREMENT,
`user_id` int(6) NOT NULL,
`username` varchar(32) NOT NULL,
`body` text NOT NULL,
`date` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=14 ;

CREATE TABLE IF NOT EXISTS `buddys` (
`id` int(6) NOT NULL AUTO_INCREMENT,
`user_one` int(6) NOT NULL,
`user_two` int(6) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

所以我的问题是,如何获取用户数据、他们发布的供稿和好友供稿。只有与好友成为好友的用户才能看到他们发布的帖子,其他人看不到。

我试过代码:

$user_id = $_SESSION['user_id'];
if ($getquery = mysql_query("SELECT * FROM feeds f
INNER JOIN users u ON u.user_id = f.user_id
WHERE u.user_id = '$user_id' OR u.user_id IN
(SELECT b.user_one OR b.user_two FROM buddys b
WHERE b.user_one OR b.user_two = '$user_id')")){

但这显示了正确的用户提要,而且与其中任何一个 friend 成为 friend 的用户仍然可以看到这些帖子。

users 和 feeds 表有类似的列。

+---+----------+
| ID | user_id |
+---+----------+

虽然哥们有

+----+----------+----------+
| ID | user_one | user_two |
+----+----------+----------+

如果表的字段设置为

+----+----------+---------+
| ID | user_one | user_two|
+----+----------+---------+
| 1 | 3 | 5 |
+----+----------+---------+

如果它是 3,我想通过我的 ID 获取它并从用户 ID 5 获取提要。

顺便说一句,我希望它像 Facebook/Twitter 那样。

最佳答案

老实说我还没有读完你所有的问题,但是......

你的子查询在这里:

... OR u.user_id IN 
(SELECT b.user_one OR b.user_two FROM buddys b
WHERE b.user_one OR b.user_two = '$user_id')

你不能这样写。 b.user_one OR b.user_two 实际上变成了一个 bool 表达式,其中 0 为假,其他一切为真。所以你的查询基本上是

... OR u.user_id IN 
(0, 1)

您必须使用 UNION 将两列合二为一。

... OR u.user_id IN 
(SELECT b.user_one FROM buddys b
WHERE b.user_one = '$user_id'
UNION
SELECT b.user_two FROM buddys b
WHERE b.user_two = '$user_id'
)

希望这已经解决了您的问题。如果没有,请给我一个快速反馈,我会阅读整个问题:)

关于php - 从 buddys、friends 和 users 表中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16867892/

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