我有一个关于狗品种的网站,其中有一个“今日狗”部分。我希望“今日之犬”每天显示一次新狗(来自 mysql 数据库)。使用php和mysql,我想操作其实很简单。
$connection = mysqli_connect("localhost", "username", "password");
$randomdog = mysqli_query($connection, "SELECT * FROM dogtable WHERE id >= RAND() * (SELECT MAX(id) FROM dogtable) LIMIT 1"));
echo $randomdog
当然,每次重新加载页面时,这都会给我一只随机狗。我希望 $randomdog 每天只更改一次。
cron 作业会是答案吗?我以前从未实现过,但我的网站上安装了 cpanel,所以我认为它不会太毛茸茸。
如果我要使用 cron 作业,我假设我会保存
$connection = mysqli_connect("localhost", "username", "password");
$randomdog = mysqli_query($connection, "SELECT * FROM dogtable WHERE id >= RAND() * (SELECT MAX(id) FROM dogtable) LIMIT 1"));
作为一个 .php 文件,由 cron 作业每天运行一次,每天更新一次 $randomdog。但是我怎样才能将 $randomdog 传递到一个单独的页面以进行回显呢?
我以前在这里问过类似的问题,答案通常是“存储一个 unixtimestamp,在一周后,当当前时间 == 时间 + 1 周时再次执行”。
这对 php 来说是不可能的?它只有在用户请求时才会执行,对吧?这意味着“时间 + 1 周”变量不可能存储在某处。
无论如何,一定要纠正我。
最佳答案
是的,您可以使用 rand() 来获得随机元素。您希望它被播种,以便每次调用时返回相同的初始 rand 值。你希望它每天都播种相同的种子。您可以使用 dayofyear() 获取一年中的第几天 (1-366)。格式为:
select * from TABLE order by rand(dayofyear(CURRENT_DATE)) limit 1
关于php - 使用 PHP 和 Mysql 每周随机查询一次数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15317614/