PHP/MySQL帮助 - 随机每日选择?

Izu*_*umi 6 php mysql random

我正试图从我的数据库中选择一个可以持续一天(每日选择)的数据.我使用以下代码:

$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)

会做的伎俩.

  • 请记住,`ORDER BY RAND()`非常贵*. (3认同)

Joh*_*ker 5

这样做的理智方法是通过设置为每天运行一次的cron作业自动生成当天内容的选择.

因此,cron作业将执行您提供的SQL并将适当的内容存储在平面文件/数据库表等中(或者甚至可以将选择的id存储在另一个表中以供将来查找).