我正试图从我的数据库中选择一个可以持续一天(每日选择)的数据.我使用以下代码:
$query = 'SELECT * FROM table ORDER BY rand() LIMIT 1
Run Code Online (Sandbox Code Playgroud)
但正如你所看到的那样,它只能从表中随机选择,每当我刷新页面时,它都会给我一个新的随机选择.如何让选秀权持续一整天?
在此先感谢<3
我正在尝试这个:
$query = "SELECT * FROM table ORDER BY rand(" . date("Ymd") . ") LIMIT 1";
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:mysql_fetch_assoc():提供的参数不是有效的MySQL结果资源.这是被破坏的部分:
$results = mysql_query($query);
while($line = mysql_fetch_assoc($results))
Run Code Online (Sandbox Code Playgroud)
所以......应该看起来像这样,对吧?(我的意思是,选择每日随机选择?)
$dailyPick = 'SELECT * FROM table ORDER BY rand() LIMIT 1';
$cacheKey = 'dailyPick'. date('dmY');
if($cache->has($cacheKey)) {
$dailyPick = $cache->get($cacheKey);
} else {
// hit database
$dailyPick = $cache->save($cacheKey);
}
Run Code Online (Sandbox Code Playgroud)
我现在正在尝试这个:
$dailyPick = 'SELECT * FROM table ORDER BY rand() LIMIT 1';
$cacheKey = 'dailyPick'. date('dmY');
if($cache->has($cacheKey)) {
$dailyPick = $cache->get($cacheKey);
} else {
// hit database
$dailyPick = $cache->save($cacheKey);
}
Run Code Online (Sandbox Code Playgroud)
但是,我错了,我在非对象上使用'has'函数.
Gnu*_*utt 15
如果您将兰特的SEED设置为每日更改的整数值,那么这将解决您的问题
$query = "SELECT * FROM table ORDER BY rand(" . date("Ymd") . ") LIMIT 1";
Run Code Online (Sandbox Code Playgroud)
会做的伎俩.
这样做的理智方法是通过设置为每天运行一次的cron作业自动生成当天内容的选择.
因此,cron作业将执行您提供的SQL并将适当的内容存储在平面文件/数据库表等中(或者甚至可以将选择的id存储在另一个表中以供将来查找).