2010-12-02 12 views
8

Je suis à la fin de ce que devrait être la valeur du paramètre requêtes. Donc, pour résumer une multiquery à travers la bibliothèque d'API graphique, ce qui suit serait la méthode de code pour l'exécuter, autant que je sache. En utilisant cette méthode dans la nouvelle bibliothèque PHP SDK de Facebook, est-ce que quelqu'un a fait ce travail? Si oui pouvez-vous laisser tomber un exemple sur la façon dont vous construisez la valeur complète de la variable $multiQuery?Facebook Nouveau SDK PHP pour API Graph - Multi Query

J'ai eu du mal avec cela pendant quelques jours et je ne trouve que des exemples avec l'ancienne bibliothèque PHP.

Répondre

2

Pourquoi est-ce toujours après avoir cogné la tête pendant des jours, vous posez une question, et 5 minutes plus tard, vous venez avec la réponse vous-même.

Donc, c'était ma belle expérience. Comme en PHP, vous pouvez utiliser un caractère "/' pour lancer une chaîne de caractères, je me suis coincé dans le flip flop du caractère guillemet et du guillemet simple. Il m'est apparu que les requêtes définies dans une requête multiple sont, duh, enveloppées par des guillemets doubles.

Alors leçon apprise? Si vous avez une clause where qui utilise une valeur de chaîne dans une requête multiple, assurez-vous que pour l'amour de pete, vous utilisez des SINGLE QUOTES autour de la valeur de chaîne sur laquelle votre filtrage est effectué.

MAUVAIS BAD - C'est ce que j'ai fait. notez les guillemets autour de myvalue et myothervalue. VILAIN!

$multiQuery = { 
    "query1":"select something from something where somecolumn = "myvalue"", 
    "query2":"select something from something where somecolumn = "myothervalue"" 
    }; 

bon exemple - Maintenant, regardez myvalue et myothervalue.

$multiQuery = { 
    "query1":"select something from something where somecolumn = 'myvalue'", 
    "query2":"select something from something where somecolumn = 'myothervalue'" 
    }; 

Alors maintenant, je peux ...

$multiQuery = { 
     "query1":"select something from something where somecolumn = 'myvalue'", 
     "query2":"select something from something where somecolumn = 'myothervalue'" 
     }; 

$param = array(  
    'method' => 'fql.multiquery',  
    'queries' => $multiQuery,  
    'callback' => '');  
$queryresults = $facebook->api($param); 

Et si l'un d'entre vous se demandent quel est le type réel de la variable $multiQuery est (pour les débutants comme moi), il est juste une des données de chaîne type. Ce n'est pas un tableau, rien de plus astucieux qu'un texte.

+1

S'il vous plaît placer des guillemets simples autour de la valeur de MultiQuery $. '$ multiquery = '{ " query1 ":" sélectionner quelque chose de quelque chose où somecolumn = \' myvalue \ '", " query2 ":" sélectionner quelque chose de quelque chose où somecolumn = \' myothervalue \ '" }'; ' – qasimzee

+0

syntaxe incorrecte. remplacer par [, ] –

1

Considérant un tableau de ids de nœud avec leurs années url respectives que vous valeurs aurez

/** 
*A JSON-encoded dictionary of the queries to perform. The array contains a set of key/value pairs. 
*Each key is a query name, which can contain only alphanumeric characters and optional underscores. 
*Each key maps to a value containing a traditional FQL query. 
*/ 
$fql = '{'; 
foreach ($path as $key1 => $value1) { 
    $fql .= '"' . $key1 . '":"SELECT share_count, like_count, comment_count, total_count FROM link_stat WHERE url=\'' . $value1 . '\'",'; 
} 

$fql .= '}'; 

$param = array(
    'method' => 'fql.multiquery', 
    'queries' => $fql, 
    'callback' => '' 
); 
try { 
    $fqlresult = $facebook->api($param); 
} catch (FacebookApiException $e) { 
    watchdog('Facebook Query', 'Parsing error on node @node | @error', array('@node' => $key1, '@error' => $e), WATCHDOG_DEBUG); } 
0

Vous pouvez essayer ceci:

$multiQuery= array ("query1" => "query #1 goes here","query2" => "query #2 goes here"); 

$param = array(
'method' => 'fql.multiquery', 
'queries' => $multiQuery, 
'callback' => ''); 

$queryresults = $facebook->api($param);