php - 使用 PHP 和 Mysql 每周随机查询一次数据库

标签 php mysql web-applications

我有一个关于狗品种的网站,其中有一个“今日狗”部分。我希望“今日之犬”每天显示一次新狗(来自 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/

相关文章:

php - jquery 视口(viewport)信息未传递给 php

php - 用于 AJAX 实时搜索的箭头键和鼠标导航

mysql - 如何使用mysql连续更新和删除

amazon-web-services - Angular AWS APP中的ERR_CERT_COMMON_NAME_INVALID

javascript - 禁用垂直弹跳但不在 div 中滚动

javascript - 在ajax调用中传递计数器

PHP crypt() - 返回的 md5 散列

java - 没有 EJB 的 Web 应用程序的 WAR vs EAR?

mysql - 如何根据其他列的重复更新表中的某些列?

database - MySQL 查询 : Displaying counts for many groups with many records