Facebook FQL错误

时间:2011-09-26 02:02:43

标签: facebook facebook-fql

SELECT eid, start_time, name FROM event WHERE (eid IN (SELECT eid FROM event_member WHERE (uid = me() AND start_time < 1317006752)))

此FQL查询应返回在1317006752

之前开始的事件

但是,它会将有效事件IN ADDITION返回到此

{
    "eid": 239526399426862,
    "start_time": 1317448800,
    "name": "Nick Grimshaw, The 2 Bears, S.C.U.M. & more! Friday 30th Sept, Only £4.50"
  }

如果我错了,现在纠正我,但1317448800大于1317006752

您可以通过转到event page,点击某些内容(即不参加),然后run the query here

来验证这一点。

3 个答案:

答案 0 :(得分:0)

我认为您的问题可能是活动创建者与活跃用户之间的时区差异。 Facebook提供此通知:

  

请注意,start_time和end_time是输入的时间   由活动创建者。 Facebook Events没有时区概念,因此,   通常,您不应该将返回的值视为已发生的值   在任何特定的绝对时间。显示事件时   facebook,没有指定或暗示时区。

答案 1 :(得分:0)

显然,event_member中的start_time纯粹用于加速对event_member表的查询,这可以返回很多结果。似乎事件的start_time更新时它没有更新。您的查询应如下所示才能正常工作,请注意区别:

SELECT eid, start_time, name
  FROM event 
 WHERE eid IN (SELECT eid 
                 FROM event_member 
                WHERE uid = me() AND start_time < 1317006752)
   AND start_time < 1317006752  

我同意这是一个错误。

答案 2 :(得分:0)

今天我遇到了这个问题,即将举办的活动: 正确的FQL应该是

SELECT eid,name,description,location,start_time,end_time,pic_big FROM event WHERE eid IN (SELECT eid FROM event_member WHERE start_time>=PLACE_UNIX_TIMESTAMP AND uid=PLACE_UID_HERE) ORDER BY start_time ASC

修改

通过以下方式获取此查询的结果:

$sql = '/fql?q=SELECT+eid,name,description,location,start_time,end_time,pic_big+FROM+event+WHERE+eid+IN+(SELECT+eid+FROM+event_member+WHERE+start_time>={time}+AND+uid={id})+ORDER+BY+start_time+ASC';
$fql_query_result = file_get_contents('https://graph.facebook.com/' . $sql '&access_token={token}');
$data = json_decode($fql_query_result,true, 512, JSON_BIGINT_AS_STRING));

重要的是将JSON_BIGINT_AS_STRING选项添加到json_decode以防止eid成为短端浮动表示

编辑2: 因为const JSON_BIG ...仅可从php5.4.X +获得:

if (defined('JON_BIGINT_AS_STRING')) return json_decode($fql_query_result,true, 512, JSON_BIGINT_AS_STRING);
return json_decode(preg_replace('/([^\\\])":([0-9]{10,})(,|})/', '$1":"$2"$3', $fql_query_result),true);

来源:http://www.pixelastic.com/blog/321:fix-floating-issue-json-decode-php-5-3