【问题标题】:Facebook New PHP SDK For Graph API - Multi QueryFacebook 用于图形 API 的新 PHP SDK - 多查询
【发布时间】:2010-12-02 07:36:41
【问题描述】:

对于查询参数值应该是什么样子,我束手无策。因此,要在图形 API 库中汇总多查询,据我所知,以下将是执行它的代码方法。

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

在来自 Facebook 的新 PHP SDK 库中使用此方法,有没有人做到这一点?如果是这样,您能否举个例子说明如何构建 $multiQuery 变量的完整值?

我已经为此苦苦挣扎了几天,我只找到了旧 PHP 库的示例。

【问题讨论】:

    标签: facebook facebook-php-sdk fql.multiquery


    【解决方案1】:

    为什么总是在敲了几天头之后,你问了一个问题,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 变量的实际类型是什么(对于像我这样的新手),它只是一个字符串数据类型。它不是一个数组,没有比文本更漂亮的了。

    【讨论】:

    • 请在 $multiquery 的值两边加上单引号。 $multiquery = '{ "query1":"select something from something where somecolumn = \'myvalue\'", "query2":"select something from something where somecolumn = \'myothervalue\'" }';
    【解决方案2】:

    考虑一个节点 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); }
    

    【讨论】:

      【解决方案3】:

      你可以试试这个:

      $multiQuery= array ("query1" => "query #1 goes here","query2" => "query #2 goes here");
      
      $param = array(
       'method' => 'fql.multiquery',
       'queries' => $multiQuery,
       'callback' => '');
      
      $queryresults = $facebook->api($param);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多