2012-03-26 3 views
1

i geschrieben haben folgende Code zu lernen, wie FQL multiquery funktioniert:FQL multiquery Fehler

include_once "fbmain.php"; 
try{  
$your_id=xxxxxxxx; 
    $fql= '{ 
    "friends":"SELECT uid2 FROM friend WHERE uid1='.$your_uid.'," 
    "friendinfo":"SELECT * FROM standard_user_info WHERE uid IN (SELECT uid2 
        FROM #friends)" 
      }'; 
$res = $facebook->api_client->fql_multiquery($fql); 
    } 
catch(Exception $o){ 
     d($o); // d() is function to print 
    } 

aber die Ausgabe zeigt Fehler

Anruf auf eine Elementfunktion fql_multiquery() auf einem Nicht-Objekt auf der Leitung 9

Ich habe auch andere Abfragen anstelle dieser beiden versucht, aber das Problem bleibt gleich. Ich benutze PHP SDK 3.0.

hilfe pls.

Antwort

0

Ich verwende keine Multi Query, da fql in die Graphik api verschoben wurde. Stattdessen verwende ich Batch-Anfrage. Hier ist ein Beispiel für eine Anfrage von/feed, die Kommentare der ersten 10 Ergebnisse und fql multi des Permalinks aus den ersten 10 Posts. Ich bin mir sicher, das ist ein bisschen zu töten für das, was Sie brauchen, aber ist das beste Beispiel, das ich habe für Grafik und fql Mischen und die Verwendung von Namen-Funktion, die scheint, was Sie brauchen, um Freunde zu tragen.

https://developers.facebook.com/docs/reference/api/batch/

<?php 
    if($type=="home"){ 
$relURL = '/'.$pageid.'/'.$type.'?'.$access_token.'%26limit='.$limit.'%26return_ssl_resources=1%26fields=id,from,name,message,likes,comments,link,picture,caption,story,source,created_time,type,actions,application,object_id,description%26since='.$since.'%26until='.$until.'%26offset='.$offset.''; 
    }else{ 
$relURL = '/'.$pageid.'/'.$type.'?'.$app_access_token.'%26limit='.$limit.'%26return_ssl_resources=1%26fields=id,from,name,message,likes,comments,link,picture,caption,story,source,created_time,type,actions,application,object_id,description%26since='.$since.'%26until='.$until.'%26offset='.$offset.''; 
    } 
$queryProfile = array(
     array('method' => 'GET', 'relative_url' => '/'.$pageid.'?fields=id,name,link,picture%26'.$app_access_token.''), 

    array('method' => 'GET', 'relative_url' => ''.$relURL.'', 'name' => 'comments', 'omit_response_on_success' => false), 
     array('method' => 'GET', 'relative_url' => '/{result=comments:$.data.0.id}/comments?fields=id,from,message,created_time%26limit=3%26offset=0'), 
     array('method' => 'GET', 'relative_url' => '/{result=comments:$.data.1.id}/comments?fields=id,from,message,created_time%26limit=3%26offset=0'), 
     array('method' => 'GET', 'relative_url' => '/{result=comments:$.data.2.id}/comments?fields=id,from,message,created_time%26limit=3%26offset=0'), 
     array('method' => 'GET', 'relative_url' => '/{result=comments:$.data.3.id}/comments?fields=id,from,message,created_time%26limit=3%26offset=0'), 
     array('method' => 'GET', 'relative_url' => '/{result=comments:$.data.4.id}/comments?fields=id,from,message,created_time%26limit=3%26offset=0'), 
     array('method' => 'GET', 'relative_url' => '/{result=comments:$.data.5.id}/comments?fields=id,from,message,created_time%26limit=3%26offset=0'), 
     array('method' => 'GET', 'relative_url' => '/{result=comments:$.data.6.id}/comments?fields=id,from,message,created_time%26limit=3%26offset=0'), 
     array('method' => 'GET', 'relative_url' => '/{result=comments:$.data.7.id}/comments?fields=id,from,message,created_time%26limit=3%26offset=0'), 
     array('method' => 'GET', 'relative_url' => '/{result=comments:$.data.8.id}/comments?fields=id,from,message,created_time%26limit=3%26offset=0'), 
     array('method' => 'GET', 'relative_url' => '/{result=comments:$.data.9.id}/comments?fields=id,from,message,created_time%26limit=3%26offset=0'), 
     array('method' => 'GET', 'relative_url' => '/fql?q=SELECT+permalink+FROM+stream+WHERE+source_id=\''.$pageid.'\'+AND+post_id=\'{result=comments:$.data.0.id}\''), 
     array('method' => 'GET', 'relative_url' => '/fql?q=SELECT+permalink+FROM+stream+WHERE+source_id=\''.$pageid.'\'+AND+post_id=\'{result=comments:$.data.1.id}\''), 
     array('method' => 'GET', 'relative_url' => '/fql?q=SELECT+permalink+FROM+stream+WHERE+source_id=\''.$pageid.'\'+AND+post_id=\'{result=comments:$.data.2.id}\''), 
     array('method' => 'GET', 'relative_url' => '/fql?q=SELECT+permalink+FROM+stream+WHERE+source_id=\''.$pageid.'\'+AND+post_id=\'{result=comments:$.data.3.id}\''), 
     array('method' => 'GET', 'relative_url' => '/fql?q=SELECT+permalink+FROM+stream+WHERE+source_id=\''.$pageid.'\'+AND+post_id=\'{result=comments:$.data.4.id}\''), 
     array('method' => 'GET', 'relative_url' => '/fql?q=SELECT+permalink+FROM+stream+WHERE+source_id=\''.$pageid.'\'+AND+post_id=\'{result=comments:$.data.5.id}\''), 
     array('method' => 'GET', 'relative_url' => '/fql?q=SELECT+permalink+FROM+stream+WHERE+source_id=\''.$pageid.'\'+AND+post_id=\'{result=comments:$.data.6.id}\''), 
     array('method' => 'GET', 'relative_url' => '/fql?q=SELECT+permalink+FROM+stream+WHERE+source_id=\''.$pageid.'\'+AND+post_id=\'{result=comments:$.data.7.id}\''), 
    //array('method' => 'GET', 'relative_url' => '/'.$pageInfo[id].'/photos?fields=id,name%26limit=9') 
); 
$batchResponse = $facebook->api('?batch='.json_encode($queryProfile), 'POST'); 
    $pageInfo = json_decode($batchResponse[0]['body'], true); 
    $pageType = $pageInfo[type]; 
    $pageLink = $pageInfo[link]; 
    $thispageid = $pageInfo[id]; 
    $MEcomments = json_decode($batchResponse[1]['body'], true); 
?> 
0

Sieht eher ein Problem mit der Instanziierung

$facebook->api_client 

Worth auch zu beachten, dass in [standard_user_info] der Spalte [uid] ist vom Typ String so würden Sie Wahrscheinlich müssen Sie auch Zitate hinzufügen.

Laut FB-Dokumenten sollte FQL multiquery schneller sein als nachfolgende Stapelaufrufe https://developers.facebook.com/docs/reference/fql/