我正在尝试使用#query1语法在第二个查询中使用第一个查询的结果。
E.g。
fql?q={"query1":"SELECT uid2 FROM friend WHERE uid1=me()","my name":"SELECT name FROM profile WHERE id IN (SELECT uid2 FROM #query1)"}
我可以看到这在https://developers.facebook.com/tools/explorer的fql查询模拟器中工作正常。
但是当我尝试通过PHP发送此查询时,我无法运行它。 代码:
$fql_multiquery_url = 'https://graph.facebook.com/'
. 'fql?q={"query1":"SELECT+uid2+FROM+friend+WHERE+uid1=me()","my+name":"SELECT+name+FROM+profile+WHERE+id+IN+(SELECT+uid2+FROM+#query1)"'
. '&access_token=' . $access_token;
$fql_multiquery_result = file_get_contents($fql_multiquery_url);
$fql_multiquery_obj = json_decode($fql_multiquery_result, true);
我认为#之前的+有一些问题。
答案 0 :(得分:0)
首先,强制性责骂:您不应该使用file_get_contents()
来查询Facebook API。使用SDK或cURL。
使用PHP,诀窍是你不应该手动编码任何东西。编写可读文本并使用PHP内部函数为您编码。
$queries = array(
'query1' => 'SELECT uid2 FROM friend WHERE uid1=me()',
'myname' => 'SELECT name FROM profile WHERE id IN (SELECT uid2 FROM #query1)'
//^ spaces aren't allowed in FQL query names.
);
$params = array(
'q' => json_encode($queries),
'access_token' => $access_token
);
$url = 'https://graph.facebook.com/fql?' . http_build_query($params);