Php 检查是否存在某些用户ID';s是在单个查询中与登录用户的好友
我的网站上有一个简单的朋友系统。现在我正在尝试创建一个多用户群消息系统,但仅限于朋友之间。我的消息系统的“To”值是逗号值,我想检查它们是否都是发送消息的人的朋友 例如,我可以通过以下查询获得用户的所有好友:Php 检查是否存在某些用户ID';s是在单个查询中与登录用户的好友,php,mysql,sql,Php,Mysql,Sql,我的网站上有一个简单的朋友系统。现在我正在尝试创建一个多用户群消息系统,但仅限于朋友之间。我的消息系统的“To”值是逗号值,我想检查它们是否都是发送消息的人的朋友 例如,我可以通过以下查询获得用户的所有好友: SELECT relation_setter user_id FROM users_relationships WHERE relation_getter = {$logged_in_user} AND active = 1 UNION SELECT relation_getter use
SELECT relation_setter user_id
FROM users_relationships
WHERE relation_getter = {$logged_in_user}
AND active = 1
UNION
SELECT relation_getter user_id
FROM users_relationships
WHERE relation_setter = {$logged_in_user}
AND active = 1
我把娜塔莎、丽塔作为我的消息表单中的$_POST['to']值,然后转换成用户ID,得到类似于126152112238的东西
现在,我如何在单个查询中检查这些ID是否都是登录用户的好友。我不想在循环中运行is_friend函数,该函数检查单个用户ID是否与登录的用户是朋友
关系模式:
用户关系
id PK
relation_setter FK user_id
relation_getter FK user_id
active smallint(1)
user_id PK
name
username
password
etc etc...
关系设置器是发送好友请求的人。为了得到我所有的朋友,我得到了所有的ID,其中我的ID要么是关系设置者
要么是关系设置者
用户
id PK
relation_setter FK user_id
relation_getter FK user_id
active smallint(1)
user_id PK
name
username
password
etc etc...
你的文章提供了对模式的模糊见解,因此我将使用一些假设
您可以通过IN语句找到与其朋友匹配的所有ID。由于已将它们作为带有逗号的数值,您可以执行以下操作:
SELECT user_id
FROM users_relationships
WHERE relation_getter IN (126152,112238,123456)
AND active = 1
这将只返回匹配好友的记录。然后可以将行数与查询中的元素数进行匹配,以确定它们是否是朋友。你也可以发送给匹配的人
编辑
这将返回此人朋友的所有用户ID,无论他们是getter还是setter,并且该ID处于活动状态
编辑2
新桌子
您的会员关系示例如下:
id | user_id | relation_setter
--------------------------------------
1 12345 1
--------------------------------------
1 98765 0
--------------------------------------
然后,如果进行查询,则只会收到有效的用户ID
select distinct a.id, b.user_id as friend
from (
select distinct id as friend
from relationships_members
where user_id = {$logged_in_user}
) a, relationships_members b
WHERE a.id = b.id
and user_id IN (126152,112238,123456)
你为什么不把发送者的所有朋友都找出来,然后遍历“收件人”列表,检查这些人是否在朋友数组/列表中?重要的是要知道他们是否都是朋友;或者想知道列表中哪些是朋友?你的模式是什么样的?@Mikeb我在想,即使有一个人不在friends中,帖子也不会出现,错误会显示谁都不是朋友…@didierc我用这个模式编辑了这个问题。我想差不多就是这样,需要不同的分区(getter和setter都有)。查询如何知道如何查找登录用户的好友?似乎您正在尝试验证好友列表,但是您的模式应该进一步规范化,以实现您的目标。请参阅我的第二次编辑。