使用PHP和MySQL
我从facebook上抓了一大堆facebook用户ID。
现在我想在我的应用程序中找到该数组的相应用户名。
显然,在我的应用程序中,用户表包含唯一的用户名和唯一的fb_uid值。
我对编程的基本理解使我有两种方式:
1)使用循环并运行fb_uid数组并逐个查找用户名。
OR
2)创建一个怪物查询,例如从用户中选择distinct(用户名),其中fb_uid = value1或fb_uid = value2 ...
那么有更好的出路吗?
谢谢。
答案 0 :(得分:10)
使用SQL的IN
运算符代替:
select distinct(username) from users where fb_uid in (value1, value2, ...)
答案 1 :(得分:1)
如果你的fb_uids列表很大(例如,超过100或500 r 1000 ids),我就不会采用“或”方式:太多“或”像这样我认为会伤害数据库。
但每个id执行一次查询也不是很好......
那么这两个想法的混合呢?每个例如50或100个fb_uids做一个查询?
而且,不是使用批次或OR,而是可以使用IN;有点像这样:
select distinct(username) from users where fb_uid IN (id1, id2, id3, ...)
不确定它会改变数据库的任何内容,但至少它看起来更好^^
唯一的问题是你不应该在IN中使用太多的ID;所以,做一些查询,每次可能有50到500个ID。
为了进一步帮助您,您可能需要查看array_slice
,以提取fb_uids数组的“切片”......
答案 2 :(得分:0)
还有另一个MySQL功能:MATCH AGAINST
SELECT * FROM customer WHERE status = 1 AND MATCH (person, city, company, zipcode, tags) AGAINST ('".$searchstring."' IN BOOLEAN MODE)
您的输入字符串将在不同的列中搜索。
如果你不知道这个函数,也许你可以重新考虑你的sql语句。