将非MySQL列表/数组/数据与MySQL行进行比较?

时间:2013-04-14 23:52:27

标签: php mysql facebook-graph-api twitter instagram

我正在开发一款iOS社交网络应用。我目前正在构建“寻找朋友”部分。

我有一个“用户”表,如下所示:

-user_id  -user_name  ... -twitter_id   -facebook_id   -instagram_id
948913    yagiz           2134421       2132412        4314124312

现在,例如,当我尝试寻找朋友时,app会在后台执行此操作:

  • 从选定的社交网络应用(Twitter / Facebook / Instagram)获取当前用户的全部关注列表。响应是一个简单的数组,由用户ID组成。

  • 对于每个Twitter / Facebook / Instagram id运行一个查询,检查它是否在应用程序中 数据库中。

目前这种方法效果很好。但我认为这不高效。因为如果用户跟随5K人在Twitter / Facebook / Instagram上运行5K查询。

所以我想问哪个是将非MySQL列表/数组/数据与MySQL行进行比较的最佳方法?

1 个答案:

答案 0 :(得分:0)

您可以使用

执行单个查询
WHERE ... IN('1', '2') 

如果你有一个id数组,你可以这样做:

$twitterIds = array(
    1234,
    1235,
    1236
);

// $twitterIdString = '1234','1235','1236'
$twitterIdString = "'" . implode("','", $twitterIds) . "'";

// $queryStub = WHERE `-twitter_id` IN('1234','1235','1236')
$queryStub = "WHERE `-twitter_id` IN(" . $twitterIdString . ")";

这将仅返回数据库中的推特用户。