Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 每天显示一条文本_Php_Sql - Fatal编程技术网

Php 每天显示一条文本

Php 每天显示一条文本,php,sql,Php,Sql,我有一个表有太多的文本记录。(例如1000记录) 我的表结构如下所示: ID | Text --------------------------------------- 1 | My Test Text 1 2 | My Test Text 2 我想每天播放一张唱片,你知道吗 感谢您需要在表中添加列来存储插入数据的日期 然后,您可以随时编写查询以按日期获取数据 SELECT * FROM my_

我有一个表有太多的文本记录。(例如
1000
记录)

我的表结构如下所示:

ID          |         Text
---------------------------------------
 1          |       My Test Text 1
 2          |       My Test Text 2
我想每天播放一张唱片,你知道吗


感谢您需要在表中添加列来存储插入数据的日期

然后,您可以随时编写查询以按日期获取数据

SELECT * FROM my_table ORDER BY RAND() LIMIT 1

这将获取一条随机记录。使用PHP缓存它,使用寿命为24小时。每次加载此页面时,PHP都应该检查缓存文件和过期时间。如果缓存已过期,则进行新查询,重新缓存。冲洗,重复。

您唯一的选择是随机排序,并将结果限制为1,因为您没有日期列

SELECT text FROM yourTable ORDER BY RAND() LIMIT 1

(假设MySQL)

您可以编写(或找到)一个函数,该函数将根据日期生成一个伪随机整数(某种类型的非常高的冲突哈希)。用它来
选择ID=?
的文本。这样,您就不必存储任何附加数据。当然,您必须将整数绑定在n到m的范围内,其中n是您的最低ID,m是您的最高ID。

orderbyrand,种子为todays date
orderbyrand(CURDATE())
$date=date('Y-m-d')
然后使用
…按兰德订购($date)

因为里面没有日期,我的建议是使用文本文件存储昨天显示的ID(一些未经测试的快速代码让您开始):


RAND()函数以定义的方式工作,因此您可以使用种子在表上生成随机选择。为此,您可以使用当前日期作为种子,查询如下
从表中选择文本\u按兰德命名顺序(CURDATE())限制1

Er。。。是 啊每行都有一个日期,或者你真的只想在24小时内抓取一条记录?@b战神:请看
我忘记了回答,解决了我的问题,谢谢,不,因为我想如果我有20条记录,从这20条记录中每天显示一条文字哇。我不知道你能在
RAND()
中写上日期。我现在懒得去尝试,但我相信你的话——真是太棒了。是的,按小时或按天随机排列很方便。另一种方法可能是这样的:从表中选择文本,其中id=DATEDIFF(CURDATE(),activated)可能会在行上添加某种MOD,以便在到达最后一个id时重新开始。
<?php
$tempfile = '/path/to/file/yesterday_id.txt';

list($yesterday_id, $yesterday_date) = explode("\t", file_get_contents( $tempfile ));
$today = date('Y-m-d');
if( $yesterday_date <> $today)
{
   $yesterday_id++;
}

$sql = "SELECT * FROM sometable WHERE id = '$yesterday_id'";
$rs = mysql_query( $sql );
if( $r = mysql_fetch_assoc($rs))
{
   echo $r['text'];
   file_put_contents($tempfile, "{$yesterday_id}\t{$today}");
}
else
{
   echo "text not found.";
}
?>