我正在尝试做一些可以在不同时间执行3种不同事情的事情。
因此,第一分钟将执行mysql查询,将设置的服务器更新为1。
第二分钟将更新,并将服务器行设置为2。
第三分钟将更新,并将服务器行设置为3
然后第四分钟将更新,并将服务器行再次设置为1。
第五分钟将更新,并将服务器行再次设置为2。
第六分钟将更新,并将服务器行再次设置为3,依此类推,但始终为1,2,3 1,2,3。
我可以做这样的事情,但是我的代码很长,我知道有可能做得短一些,但不知道怎么做。
$t_Min=date("i");
if ($t_Min == 1) {
mysql_query("UPDATE `list` SET `server` = '1'"); }
else if ($t_Min == 2) {
mysql_query("UPDATE `list` SET `server` = '2'"); }
else if ($t_Min == 3) {
mysql_query("UPDATE `list` SET `server` = '3'"); }
else if ($t_Min == 4) {
mysql_query("UPDATE `list` SET `server` = '1'"); }
else if ($t_Min == 5) {
mysql_query("UPDATE `list` SET `server` = '2'"); }
else if ($t_Min == 6) {
mysql_query("UPDATE `list` SET `server` = '3'"); }
答案 0 :(得分:3)
最容易让SQL完成工作-在一个查询中:
UPDATE list SET server=IF(MOD(MINUTE(NOW()), 3) = 0, 3, MOD(MINUTE(NOW()), 3))
当然,这依赖于MySQL中正确的时间戳。您也可以使用变量存储MOD,但这很容易理解。
编辑:当然,如果您想使用PHP中的数字,则可以在那里进行数学计算。逐步分解为:
$t_Min = (int)date("i");
$minuteMod = $t_Min % 3; // This is modulus
$minutes = ($minuteMod == 0 ? 3 : $minuteMod);
答案 1 :(得分:0)
使用模运算符%
:
$insertValue = ($t_Min-1) % 3 + 1;
这是一个示范:
$values = [1,2,3,4,5,6];
foreach ($values as $t_Min) {
$insertValue = ($t_Min-1) % 3 + 1;
echo "$t_Min => $insertValue \n";
}
会返回:
1 => 1
2 => 2
3 => 3
4 => 1
5 => 2
6 => 3
演示:issue 472