2010-12-02 33 views
8

我在我的智慧結束查詢參數值應該看起來像什麼。因此,爲了在圖API庫中提供一個多查詢,下面將是執行它的代碼方法,據我所知。Facebook圖形API的新PHP SDK - 多查詢

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

在Facebook的新PHP SDK庫中使用這種方法,有任何人使這項工作?如果是這樣,你可以舉一個例子來說明如何構建$multiQuery變量的完整值?

我一直在爲此努力奮鬥了幾天,我只找到舊的PHP庫exmaples。

回答

2

爲什麼總是在打了幾天腦袋後,你問了一個問題,5分鐘後,你提出了自己的答案。

所以這裏是我可愛的經歷。

由於在PHP中,你可以使用一個"/'字符來啓動一個文本字符串,我讓自己卡在雙引號字符和單引號字符的翻轉中。據我瞭解,在多查詢中定義的查詢是用雙引號括起來的。

那麼經驗教訓?如果你有一個在多重查詢中使用字符串值的where子句,請確保pete的緣故,在你的過濾字符串值周圍使用SINGLE QUOTES。

不好的 - 這是我做的。注意myvalue和myothervalue周圍的雙引號。淘氣!

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

很好的例子 - 現在看myvalue的和myothervalue。

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

所以現在我可以...

$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); 

如果任何你想知道什麼是$multiQuery變量的實際類型是(對於我這樣的新手),它只是一個字符串數據類型。這不是一個數組,沒有比文本更漂亮的了。

+1

請周圍放置的$ multiquery值單引號。 `$ multiquery ='{ 「query1」:「從somecolumn = \'myvalue \'選擇某些東西,」 「query2」:「從somecolumn = \'myothervalue \'」 }'選擇某些東西'; ` – qasimzee 2011-08-12 07:40:35

1

考慮節點ID的各自的URL的數組作爲值,您將有

/** 
*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

你可以試試這個:

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

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

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