gpt4 book ai didi

facebook - 使用 FQL 从 Facebook API 仅检索即将到来的生日

转载 作者:行者123 更新时间:2023-12-02 08:01:04 25 4
gpt4 key购买 nike

使用information on FQLthe user table根据 Facebook 的开发者文档,我想出了以下代码。

    //build fql string
$fql = "SELECT name, birthday_date FROM user
WHERE uid IN
(SELECT uid2 FROM friend WHERE uid1 = me())
AND strlen(birthday_date) != 0 AND substr(birthday_date,0,3)
IN ('{$currentMonth}/', '{$nextMonth}/')";
$fql.=$orderBy;
$fql.=" LIMIT " . $limit;

//query facebook
$params = array(
'method' => 'fql.query',
'query' => $fql,
'callback' => ''
);
$birthdays = $this->facebook_obj->api($params);

$currentMonth$nextMonth 分别设置为当前月份和下个月的字符串表示形式,采用 mm 格式。 (例如“09”、“10”等)

这是“工作”,但假设今天是 11 月 29 日,我有 20 个 friend 的生日在 11 月,并且 $limit 设置为 10。在这种情况下,有一个非常好的方法它返回的 10 个生日有可能都在 11 月 29 日之前。

我真正想做的是从今天开始,本月和下个月即将到来的生日。我怎样才能修改这个查询来完成这个任务?

谢谢!

** 编辑,请参阅 Shawn 和我之间的评论线程以获取可能的替代解决方案。尚未接受任何答案,因为没有人直接解决原始代码/问题。

最佳答案

虽然晚了几个月,但也许可以帮助其他面临同样问题的人。基本上,FQL IN 运算符不会检查该值是否在给定范围内,而是检查给定值是否与提供的任何不同值相匹配。在您的示例中,如果值是“09”和“10”,则返回 9 月和 10 月的所有生日,因为这些生日月份与提供的月份数字匹配。

您可以使用 PHP 或您正在使用的任何其他语言计算以下值,并在 FQL 中使用它们(今天是 3 月 17 日,假设我们希望 4 月 17 日是结束日期):

  • 该月的今天 (17),
  • 今年的今天月份 (03)
  • 结束日期 每月 (17)
  • 结束日期 一年中的月份 (04)

确保分别使用 dd 和 MM 格式化日期和月份(如果是个位数,则用零填充)。那么您的 FQL 将如下所示:

      SELECT name, birthday_date
FROM user
WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me())
AND strlen(birthday_date) != 0
AND ((substr(birthday_date, 0, 2) = '03'
AND substr(birthday_date, 3, 5) >= '17')
OR (substr(birthday_date, 0, 2) = '04'
AND substr(birthday_date, 3, 5) < '17'))
ORDER BY birthday_date

这将返回生日在 3 月 17 日至 4 月 17 日之间的好友。

关于facebook - 使用 FQL 从 Facebook API 仅检索即将到来的生日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8004345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com