使用不同的值多次搜索数据库表

时间:2011-06-05 19:38:26

标签: php mysql

我有一个包含facebook ID列表的用户表,如下所示。 'userID'是我给每个条目的唯一键

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函数!

3 个答案:

答案 0 :(得分: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功能。如果您尝试将数组转换为要在implode()函数中使用的字符串,则PHP函数IN可能很有用。

答案 1 :(得分:1)

您可以通过以下方式运行单个查询:

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

我希望能理解你的问题。

答案 2 :(得分:1)

和Fabrizio说的一样,最好的方法是首先将所有ID写入php数组然后开始循环通过这个数组来执行你想要的功能。

或更好,使用现有的friends.getMutualFriends功能,

Facebook Mutual friends

这将允许您使用您的网站向用户显示相互之友并邀请其他人

玩得开心,希望有所帮助