[英]Mutual Friends PHP
所以通常我不会这样求助,所以这是第一次。 但是,对于一个很可能很简单的查询,我已经花了两天的时间。
我想获取数量,并且实际用户打印出我们彼此一样,就像facebook一样。
我的表格如下。
朋友编号| user1_id | user2_id | 状态
用户名| 第一| 持续
因此,我掌握了背后的简单想法。 如果我是某人的朋友,而他们也是该人的朋友,则该人成为共同的朋友。
我尝试了下面的方法,但没有实际结果,并且离线尝试了许多其他示例,并且坦率地说,我不了解内部联接,因为我很少使用它们,所以如果有人可以提出一些建议并可能解释每个可能帮助我和其他人为将来工作。
我的会话ID在$ user1_id下,用户2在$ user2_id下,如果有帮助,都针对MYSQLI注入进行了清理!
谢谢任何能帮助我的人。
$mutual_friends = mysqli_query($mysqli,"
SELECT user.id
FROM user
WHERE EXISTS(
SELECT friends.user1_id, friends.user2_id, friends.status
FROM friends
WHERE friends.user1_id = '$user1_id' AND friends.status = 2
AND friends.user2_id = user.id
)
AND EXISTS(
SELECT friends.user1_id, friends.user2_id, friends.status
FROM friends
WHERE friends.user1_id = '$user2_id' AND friends.status = 2
AND friends.user2_id = user.id
)
");
$mutualfriend=mysqli_fetch_array($mutual_friends);
$mutualfriendcount=mysqli_num_rows($mutual_friends);
The mutual friend count by number
echo"".$mutualfriendcount.";
var_dump($mutual_friends );
while($mutualfriend=mysqli_fetch_array($mutual_friends)){
The list of users by name and id
}
$mutual_friends = mysqli_query($mysqli,"
SELECT user.user_id,
user.first,
user.last
FROM user
INNER JOIN friends as friends1
ON friends1.user2_id = user.id
AND friends1.user1_id = " . $user1_id . "
AND friends1.status = 2
INNER JOIN friends as friends2
ON friends2.user2_id = user_id
AND friends2.user1_id = " . $user2_id . "
AND friends2.status = 2
");
说明:
首先,您的user_id列是数字列,因此您不应将其值括在引号中。
SELECT ... FROM user
没有秘密,它将选择所有用户。
然后INNER JOIN
有friends
会发现,在这些记录friends
是有user1_id
设置为您连接的用户,并表示与它加入了用户记录了友谊。 现在,如果friends
没有此类记录,则将user
记录从结果集中过滤掉。 因此,本质上,在第一个INNER JOIN
之后,我们留下的用户记录对应于所连接用户的朋友。
然后第二个INNER JOIN
再次尝试寻找朋友,但有一个区别。 这次, user1_id
必须与给定的$user2_id
匹配。 因此,这仅限于用户#2的朋友。 现在,在应用了第一个INNER JOIN
之后,这些朋友中的一些已经从结果集中过滤掉了,所以现在,我们仅通过去除不是用户#2朋友的用户来进一步减少结果集。
这样就可以达到预期的最终结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.