Php 使用mySQL每天获取新表数据

Php 使用mySQL每天获取新表数据,php,mysql,Php,Mysql,我工作的网站提供了一项服务,只有会员才能完全访问内容。我正试图在主页上创建一个“示例”,获取新的mysql数据,这些数据通常每天只供会员使用,并为所有用户提供该网站提供的“免费示例” 数据库包含1000多个条目,我想找到一种每天从数据库获取新mysql数据的方法 假设我的数据库如下所示: id cars 1 honda 2 volvo 3 ford 4 audi 我希望“今日之车”是“本田”24小时,然后是“福特”24小时,然后是“奥迪”24小时,等等 这

我工作的网站提供了一项服务,只有会员才能完全访问内容。我正试图在主页上创建一个“示例”,获取新的mysql数据,这些数据通常每天只供会员使用,并为所有用户提供该网站提供的“免费示例”

数据库包含1000多个条目,我想找到一种每天从数据库获取新mysql数据的方法

假设我的数据库如下所示:

id    cars
1     honda
2     volvo
3     ford
4     audi
我希望“今日之车”是“本田”24小时,然后是“福特”24小时,然后是“奥迪”24小时,等等

这就是我到目前为止所做的:

<?php 
    //Create mysql connect variable
    $conn = mysql_connect('server', 'username', 'password');
    //kill connection if error occurs
    if(!$conn){
        die('Error: Unable to connect. <br/>' . mysql_error());
    }
    //connect to mysql database
    mysql_select_db("masdswe9", $conn);

    $results = mysql_query("SELECT * FROM cars");

    $name_array = Array();

    while($row = mysql_fetch_array($results)){
        $name_array[] = $row['name'];
    }
    shuffle($name_array);

   /* I would like for this to fetch NEW SQL data every 24 hours, 
   since I am shuffling names above, slot 0 will be different once I 
   come up with a way to fetch new mysql data every 24 hours */
    echo $name_array[0];
?>

我将创建一个名为carofday的DB表,您可以从中选择它,它将在Cars表中显示汽车的ID。或者你可以有一列CarofDay,或者改变汽车的顺序,但我认为这些都有点干扰

创建一个每天运行一次的cron,并将一辆随机的汽车写入carofday。然后,您可以执行上述操作,但不必担心时间问题,您只需选择一辆车:

SELECT
   cars
FROM
   CarOfTheDay
   JOIN Cars USING (id)
LIMIT 1
如果你坚持一天一次,那么这个限制就没有必要了


顺便说一句,使用PDO或mysqli而不是mysql.*。仅选择您需要的列,不在生产代码中使用select*。。并且只选择您需要的行,您就可以在查询中随机化。

@爆炸药丸为您的未来提供了一个很好的解决方案。在你的未来,一些汽车公司会付给你一大笔钱,让他们的产品成为你今天的汽车

现在,让我们假设你只想浏览一下你的汽车清单,让每一辆车依次成为当天的汽车。假设您的ID值都存在,没有间隙,从1开始

然后:

我会每天从你桌上所有的车中按id顺序给你一辆新车

这里的技巧是这个表达式:1+MODTO_dayscordate,从cars+1中选择MAXID

它基本上是这样做的:

将今天的日期转换为数字 从表中计算最大ID号 取今天的日期除以该数字 查找具有该id的行。 1+和-1之间存在一些不正常的关系,因为模运算是0-n-1而不是1-n

请注意,我使用了>=和LIMIT 1,而不是简单地=这样,如果您的id序列中出现了一个间隙,那么您的查询不会在随机的一天崩溃成一堆

编辑此项假设您的表名为cars,并且它包含id列和car列。如果不是这样,则需要相应地更改查询。在编程之前,最好尝试在诸如phpmyadmin之类的SQL客户机中调试这些东西。我在自己的一些虚拟数据上做了测试


我很感激你的回答,虽然我对mySQL还很陌生,但你的解释让我难以理解:我如何“计时”每24小时将汽车ID插入新表?这就是我的麻烦…克朗的工作。只需谷歌cron或crontab,您就会发现大量的Inormation Linux。如果您在windows计算机上,则必须使用windows任务计划程序或某种cron仿真。一个cron作业可以运行一个程序,甚至一个PHP程序,如果你喜欢的话,它可以做你需要的DB更改。。。因此,没有cron作业就无法实现这一点?我正在运行Windows。。。我希望有一个编程的唯一解决方案。。。我希望以某种方式使用时间戳或类似的…@MHZ,这需要了解以前的状态,并且程序不会可靠运行,即仅在每次访问页面时运行。为什么不想使用cron作业?它们对于许多任务来说都是非常棒的——不是什么可以避免的。真的没有什么真正的原因,我对Linux没有太多的经验,但我将尝试一下,这似乎是一件很有用的事情来学习。。。谢谢如果您是MySQL新手,请不要使用MySQL\u查询。虽然这在示例中很流行,但除非格外小心,否则此函数非常危险。mysqli系列函数和PDO更加安全。展示更好的实践。感谢您的回复。你的SELECT语句超出了我对mySQL的了解,但是它似乎返回false,你确定语法正确吗?当你从cars order by id中选择id时,你得到了什么?没有错误,它选择了所有的car id和orders by id。。。我的数据库中确实有一个id字段,但是,我需要SELECT语句每隔24小时选择一行。这就是我的答案。
SELECT id, car
  FROM cars
 WHERE id >= 1+MOD(TO_DAYS(CURDATE()),(SELECT MAX(ID) FROM cars)+1)
 ORDER BY ID
 LIMIT 1