2

我有一张桌子,在那里我得到了 Facebook 事件 ID。

id    event_id    attendings
 1    12345678

我将获取 event_id 并将其放入查询中:

$query = 'https://graph.facebook.com/fql?q=SELECT+attending_count+FROM+event+WHERE+eid='.$event_id.'&access_token='.$params1['access_token'];
$result = file_get_contents($query);
$obj = json_decode($result, true);
foreach ($obj['data'] as $item) { 
$attend = $item['attending_count'];
} 

现在我将使用 $attend 更新 event_id = 12345678 的表出席

问题是:我怎样才能用我表中的所有行来做到这一点

谢谢

对不起我的拼写,英语不是我的母语。

4

2 回答 2

1

attending_count您可以使用单个 FQL 查询获取所有所需的值,然后在结果的循环内更新现有表:

define('FB_FQL_API', 'https://graph.facebook.com/fql?');

$dbh = new PDO("mysql:dbname=$dbname", $username, $password);
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, FALSE);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$qry = $dbh->query('
  SELECT GROUP_CONCAT(event_id)
  FROM   my_table
');

$upd = $dbh->prepare('
  UPDATE my_table
  SET    attendings = :attend
  WHERE  event_id   = :event
');

$fql = '
  SELECT eid, attending_count
  FROM   event
  WHERE  eid IN ('.$qry->fetchColumn().')
';

$url = FB_FQL_API . http_build_query([
  'q'            => trim(preg_replace('/\s+/', ' ', $fql)),
  'access_token' => $params1['access_token']
]);

$res = json_decode(file_get_contents($url));

foreach ($res->data as $event) $upd->execute([
  ':attend' => $event->attending_count,
  ':event'  => $event->eid
]);
于 2012-12-28T23:38:56.953 回答
1

看起来您需要在一个大循环中完成这一切,因为您必须为每个事件执行 facebook API 调用。

因此,第一步是使用您选择使用的任何 MySQL 库从表中获取所有结果。查询将是:

SELECT id, event_id FROM table;

假设当您遍历结果集时,您将数据分配给这样的数组:

$array[$row['id']] = $row['event_id'];

现在,您将像这样循环遍历该数组:

foreach($array as $db_id => $event_id) {
    // your facebook code here

    // update the database with your library of choice using this query
    UPDATE table SET attendings = $attending WHERE id = $db_id
}
于 2012-12-28T23:46:17.543 回答