1

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']);}
  }

誰でも解決策を提案できますか? もしかしたら、以前に同じような問題に直面したことがある人もいるかもしれません。

ありがとう。

4

1 に答える 1

1

Graph API 応答と FQL クエリの構築を処理するコードに重大な問題があります。

  1. $facebook->api('/me/friends')data(フレンドの詳細を含む) と で構成される連想配列を返しますpaging。(名前付けを明確にするために、これはフレンドリストではなく、ユーザーのフレンドのリストです)。
  2. (uid=)クエリにinWHERE句が含まれているという事実に関連する API から取得したエラー。

ループを簡単に修正できます。

$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;
于 2012-04-21T23:55:23.130 に答える