如何在每24小时后从SQL表中选择1个新行

时间:2016-07-29 14:37:27

标签: php mysqli cron

我有一个SQL表:mytable,as:

id     |    val1    |    val2
-----------------------------------
1           a              567
2          zzx            7678
3         gtft             5435

现在,我有一个php页面 - magic.php,其中包含:

$query = "SELECT * FROM mytable WHERE id='$id'"; // id keeps changing per day(i want this)
$result=mysqli_query($conn, $query);
$data = mysqli_fetch_assoc($result);

echo "Value1 is:".$data['val1']."<br/>";
echo "Value2 is:".$data['val2'];

现在我想要$ query来选择id = 1来启动&amp;然后下一个id,每24小时一次。 当行完成时,它会循环返回以重新启动。

我尝试了很多东西:sleep(),for / while循环,输出缓冲和延迟&amp; CRON JOBS。 但还没有成功。任何猜测,如何实现这一目标?非常感谢您的宝贵时间。

1 个答案:

答案 0 :(得分:0)

这个怎么样?

首先,让我们找到开始time()并将其写下来。

$start = 1469804863;

现在,让我们找到该表中的行数:

$num_rows = mysqli_result(mysql_query("SELECT COUNT(*) FROM `mytable` "),0);

现在,计算天数的差异:

$delta = (time() - $start) / 86400;

现在,让我们找出我们需要的那一天:

$row_number = (int)$delta % $num_rows;

就是这样!现在就选择正确的行!

$row = mysqli_query("SELECT * FORM `mytable` LIMIT {$row_number}, 1");

这样,$ row_number将从0开始并且像1,2,3,4一样增长,直到达到行数,然后再次变为0,1,2,3等等,无限循环

现在,保持简短:

$num_rows = mysqli_result(mysql_query("SELECT COUNT(*) FROM `mytable` "),0);
$row_number = floor((time() - 1469804863) / 86400) % $num_rows;
$row = mysqli_query("SELECT * FORM `mytable` LIMIT {$row_number}, 1");