2011-06-05 33 views
2

我有一個用戶表,其中包含如下的Facebook ID列表。 「用戶ID」是唯一鍵我給每個條目使用不同的值多次搜索數據庫表

userID name   facebookID 
1  John Smith 5012991 
2  Mark Jones 5912356 
3  Bob Doe  814126819 

我的問題是,我有在當前登錄用戶的Facebook的朋友ID的列表。你可以想象這可以是100到1000之間的任何東西,我基本上需要在我的用戶表中搜索每個用戶的朋友ID,以查找它們是否已經在其中(並且因此表明他們的Facebook朋友已經在我的網站上)。

我能想到找到匹配的唯一方法是做一個foreach循環,併爲每個用戶的Facebook用戶id運行一個查詢,但是這可能會一次達到1000或更多的查詢,這是相當許多。有什麼方法可以使這種搜索更有效率,也許通過使用我不知道的mySQL函數!

+0

你如何確定他們是否是朋友,從上表中不明顯? – bumperbox 2011-06-05 19:46:51

回答

3

您可以通過SELECT * FROM friends WHERE facebookID IN (5912356, 814126819);來查找給定列表中的所有朋友。您可以在這裏閱讀IN功能:http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html#function_in,如果您需要找到尚未列在您的列表中的朋友,則可以使用NOT IN功能。如果您嘗試將數組轉換爲字符串以便在IN函數中使用,則PHP函數implode()可能很有用。

1

您可以運行一個查詢是這樣的:

SELECT * FROM user WHERE facebookID IN (id1, id2, id3); 

我希望能明白你的問題。

1

以及Fabrizio說,最好的方法是先把所有的ID都寫入php數組,然後開始循環這個數組來做你想要的功能。

,甚至更好,使用已經存在的friends.getMutualFriends功能,

Facebook Mutual friends

這將讓你展現給用戶共同的朋友使用您的網站,並邀請其他人

玩得開心,希望它有助於