Php facebook的FQL查询

Php facebook的FQL查询,php,facebook,facebook-fql,Php,Facebook,Facebook Fql,我使用 $graph_url = "https://api.facebook.com/method/fql.query?access_token=" . $access_token . "&query=SELECT+uid,name,work.position.name+FROM+user+WHERE+uid+IN+ (SELECT+uid2+FROM+friend+WHERE+uid1+=+me())&format=json"; 我想设置一个条件来获取工作位置名为“dev

我使用

$graph_url = "https://api.facebook.com/method/fql.query?access_token=" . $access_token .
 "&query=SELECT+uid,name,work.position.name+FROM+user+WHERE+uid+IN+
 (SELECT+uid2+FROM+friend+WHERE+uid1+=+me())&format=json";
我想设置一个条件来获取工作位置名为“dev”的朋友。我尝试了
FQL
like

$graph_url = "https://api.facebook.com/method/fql.query?access_token=" . $access_token .
 "&query=SELECT+uid,name,work.position.name+FROM+user+WHERE+uid+IN+
(SELECT+uid2+FROM+friend+WHERE+uid1+=+me())+AND+strpos(work.position.name,'dev')>=0&format=json";

但这会使我产生空数组,甚至其中一些满足条件。有人能给我建议正确的方法吗..提前谢谢。

其他一些人也尝试过实现这一点,请参见

我假设不能在包含数组而不是对象(可以通过object.subobject.field引用)的字段上使用strpos()

我怀疑的“证据”:如果您尝试搜索朋友的当前位置(这是用户对象的子对象,而不是数组),它会起作用:

SELECT uid,name,current_location FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) and strpos(current_location.city, 'M') = 0
在那里,我搜索我所有居住在以“M”开头的城市的朋友

最终,如果FQL不能解决您的问题,您还可以在客户端解析结果

顺便说一下,我认为您应该为FQL查询使用另一个端点:

http://graph.facebook.com/fql?q=...

您可以将strpos&lower用于您已经拥有的可索引字段的某些数据子集

在您的示例中,您没有可索引字段,因此您得到的是空数组

SELECT uid,name,work.position.name  FROM user WHERE uid IN 
(SELECT uid2 FROM friend WHERE uid1 = me()) AND work.position.name 

此fql语句提供了为work.position.name提供值的朋友列表,然后在此json对象上应用条件。

如我所述,没有afaik,并建议您分析您这边的结果!意味着获取所有数据,然后需要作为数组进行搜索。是的,你需要循环所有用户,并在用户级别上通过“工作”数组在position.name字段中搜索“dev”。是的,我有这个想法,但假设我有100000个朋友,那么这将不是更好的选择。也许,但在我看来,没有其他方法,所以如果FQL本身不提供您想要的功能,您希望如何做到这一点?而且不太可能有100万个朋友,我猜平均用户大约有150-200个。