Facebook API - 致命错误:未捕获异常:601:分析错误:意外')'在第37位

时间:2012-04-21 22:00:38

标签: facebook facebook-apps

我有一个FB应用程序脚本,我试图让它工作,但我收到此错误:

  

致命错误:未捕获异常:601:分析错误:意外')'在第37位抛出   在第658行的/home/altin/public_html/apps/empower/empowermix/base_facebook.php

以下是我收到错误的脚本部分:

$friendsLists = $facebook->api('/me/friends');
  foreach ($friendsLists as $friends) 
  {
   $ile=count($friends);
  }

$zapytanie=" (uid=".$friends[0]['id'].") ";
  for($i=1;$i<$ile;$i++)
  {
    $zapytanie.=" or (uid=".$friends[$i]['id'].") ";
  }

**$znajomi = $facebook->api(array("method"=> "fql.query", "query"=> "SELECT uid FROM page_fan WHERE ".$zapytanie." AND page_id='".$page_id."'")); //friends w fanpage**

$sql=mysql_query("SELECT * FROM '".$przedrostek_tab."ludzie' WHERE 'uid'=".$user_info['id']);
$czy_jest=mysql_fetch_array($sql);
foreach($znajomi as $k => $w)
      {$znajomi_weryfikacja[$k]=$w['uid'];}
if($znajomi_weryfikacja)
  {$znajomi_weryfikacja=( array_diff($znajomi_weryfikacja, explode("|",$czy_jest['znajomi_start'])));
  if($czy_jest[0])
    {foreach($znajomi_weryfikacja as $k => $w)
      {$zaproszeni_znajomi.=$w.'|';}
    mysql_query("UPDATE '".$przedrostek_tab."ludzie' SET 'zaproszeni_znajomi' = '$zaproszeni_znajomi' WHERE 'uid' =".$user_info['id']);}
  }

有人可以帮忙建议一个解决方案吗?也许你们中的一些人之前可能遇到过类似的问题。

感谢。

1 个答案:

答案 0 :(得分:1)

您的代码处理图谱API响应和FQL查询的构建存在严重问题:

  1. $facebook->api('/me/friends')返回由data(包含朋友详细信息)和paging组成的关联数组。 (并且要明确命名这不是朋友列表,而是用户朋友的列表)。
  2. 您从API获得的错误与您的查询在(uid=)子句中包含WHERE的事实有关。
  3. 你可以简单地修复你的循环:

    $friendsList = $facebook->api('/me/friends');
    $friends = $friendsList['data'];
    $ile=count($friends);
    
    $zapytanie=" (uid=".$friends[0]['id'].") ";
    for($i=1;$i<$ile;$i++){
      $zapytanie.=" or (uid=".$friends[$i]['id'].") ";
    }
    // ...
    

    实际上,您应该了解有关FQL和Graph API的一些事项:

    您最好只检索所需数据并使用IN而不是多个OR

    $response = $facebook->api('/me/friends?fields=id');
    $friends = $response['data'];
    $uids = array();
    
    foreach ($friends as $friend)
      $uids[] = $friend['id'];
    
    $zapytanie = 'uid IN ('. implode(',', $uids) .')';
    // ...
    

    您也可以在单个FQL查询中执行此操作

    $fql = <<FQL
    SELECT uid FROM page_fan WHERE page_id = {$page_id} AND uid IN (
      SELECT uid2 FROM friend WHERE uid1 = me()
    )
    FQL;