1

使用 PHP 和 MySQL

我从 facebook 抓取了一系列 facebook 用户 ID。

现在我想在我的应用程序中为这个数组找到相应的用户名。

显然,在我的应用程序中,用户表包含唯一的用户名和唯一的 fb_uid 值。

我对 oof 编程的基本理解使我想到了两种方法:

1)使用循环,遍历fb_uid的数组,一一找到用户名。

或者

2) 创建一个怪物查询,例如 select distinct(username) from users where fb_uid = value1 OR fb_uid = value2 ...

那么有更好的出路吗?

谢谢你。

4

3 回答 3

10

改用 SQL 的IN运算符:

select distinct(username) from users where fb_uid in (value1, value2, ...)

http://www.w3schools.com/SQl/sql_in.asp

于 2009-08-13T17:00:47.763 回答
1

如果您的 fb_uids 列表很大(例如,超过 100 或 500 到 1000 百个 id),我不会采用“或”方式:我认为,太多这样的“或”会伤害数据库。

但是每个 id 做一个查询也不是很好......


那么这两种想法的混合呢?例如,每 50 或 100 个 fb_uids 执行一个查询?

而且,您可以使用 IN ,而不是使用很多或 OR ;有点像这样:

select distinct(username) from users where fb_uid IN (id1, id2, id3, ...)

不确定它是否会改变数据库,但至少它看起来更好^^

唯一的事情是你不应该在 IN 中使用太多的 id;所以,做几个查询,每次有 50 到 500 个 id 可能是要走的路。


为了进一步帮助您,您可能需要查看array_slice, 以提取 fb_uids 数组的“切片”...

于 2009-08-13T17:04:10.970 回答
0

还有另一个 MySQL 函数:MATCH AGAINST

SELECT * FROM customer WHERE status = 1 AND MATCH (person, city, company, zipcode, tags) AGAINST ('".$searchstring."' IN BOOLEAN MODE)

您的输入字符串将在不同的列中进行搜索。

如果你不知道这个函数,也许你可以重新考虑你的 sql 语句。

于 2009-08-14T12:12:03.070 回答