我有一个SQL表:mytable,作为:
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来启动&然后是下一个id,每24小时一次。当这些行结束时,它会循环回来重新开始。
我尝试了很多东西:sleep(),for/while循环,带延迟的输出缓冲&CRON作业。但还没有成功。你猜怎么着,到底是怎么做到的?提前感谢您的宝贵时间。
这个怎么样?
首先,让我们找出启动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");