【问题标题】:PHP: Random Result once a day,PHP:每天一次随机结果,
【发布时间】:2017-06-12 17:45:08
【问题描述】:

PHP: 我知道 RAND() 函数会以随机顺序返回结果。但我想每天获得一次随机结果。因此,每天都会有不同的订单,但该订单应该在当天固定。 [SELECT * FROM Table_Name ORDER BY RAND();]

我怎样才能做到这一点,有什么办法吗?

【问题讨论】:

  • 创建一个事件,在每天开始时运行您的 SELECT..ORDER BY RAND 并将其存储在会话中以便当天检索。第二天重复。
  • 如果您希望它在某一天保持固定,您只需将它存储在与该天相关的某个地方。将日期和随机结果插入另一个表,也许?
  • 可能有多种解决方案,但您可以运行 cront 作业来获取随机值并将按值顺序保存在数据库或文本文件中的某处。读取该值并对记录进行排序。每天上午 12:01,您可以根据您的要求生成随机 val 并保存。在您的查询中只需读取该值。
  • 创建您自己的random 函数,它以当前日期和行ID 作为参数并返回一个伪随机数。

标签: php mysql


【解决方案1】:

使用 answer 中的函数 shuffleIt 并将当天的 Unix 时间戳传递给它。

shuffleIt(
  $array,
  strtotime(Carbon::now()->toDateString())
);

这总是会在一天内返回相同的结果。

【讨论】:

    【解决方案2】:

    希望对你有帮助

    select * from TABLE order by rand(dayofyear(CURRENT_DATE)) limit 1

    【讨论】:

      【解决方案3】:

      您无法通过单个查询来解决此问题。相反,您应该使用随机顺序创建一个单独的表,然后每天重新生成一次。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-28
        • 1970-01-01
        • 2018-05-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多