簡體   English   中英

共同的朋友PHP

[英]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 JOINfriends會發現,在這些記錄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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM