我尝试根据之前的更新日期更新MySQL数据库中的多个单元格。我有一个问题,未更改,尾随单元格更新为0。
数据库表如下所示(对于Day#,默认值为0; N =最后更新日期):
id--Run--Day1--Day2--Day3--Day4
1----N------1-----2-----3----4
以下代码执行以下操作:
差异为2天时的示例数据库表:
id--Run--Day1--Day2--Day3--Day4
1----N------3-----4-----3----4
我的问题是我需要它将所有尾随天数更改为0.所以在这个例子中,Day3& Day4应该都是0。 我一直在尝试另一个foreach()声明,但无法获得它背后的逻辑。有人请指出我正确的方向吗?
$DaysColumnRange2 = range (1, 4);
foreach ($DaysColumnRange2 as $DaysColumnRangeLoop2){
$SubtractedDaysColumns2 = $DaysColumnRangeLoop2 - $diff2format;
$MoveToNewDay2 = ${$Day.$SubtractedDaysColumns2};
$OriginalOldDay = $diff2format + $SubtractedDaysColumns2;
$sql2 = "UPDATE users SET Day$MoveToNewDay2='$OriginalOldDay' WHERE id='$id'";
if ($conn->query($sql2) === TRUE) {
echo "RECORDS UPDATED SUCCESFULLY";
} else {
echo "Error updating record: " . $conn->error;
}
}
我将继续使用我的尝试更新此第一篇文章。
(这不是一个很好的方式,但这是我能够把它放在一起,因为Cron的工作不可靠而且我还没有弄清楚MySQL Triggers是如何工作的)< / p>
**
**
本节是为了澄清我的问题。
我们现在就说这是我的数据库:
id--Run--Day1--Day2--Day3--Day4
1----N------1-----2-----3----4
我运行下面的代码$ diff2format = 2:
//>Database credentials + login here
//Retrieve database entry for Run
$id = 1;
$todaysdateupdate = date("Y-m-d");
$lastupdatequeryresult = mysql_query("SELECT Run FROM users WHERE id='$id'");
$lastupdaterow = mysql_fetch_assoc($lastupdatequeryresult);
//Compare Run date to today's date.
$date3=date_create($lastupdaterow['Run']);
$date4 = date_create(date("Y-m-d"));
$diff2=date_diff($date3,$date4);
$diff2format = $diff2->format("%a");
//Day1, 2, 3, etc...
$result1 = mysql_query("SELECT Day1 FROM users WHERE id='$id'");
$row1 = mysql_fetch_assoc($result1);
//Hard coded "Day#" variables
$Day = "Day";
$Day1 = $row1['Day1'];
$Day2 = $row2['Day2'];
$Day3 = $row3['Day3'];
$Day4 = $row4['Day4']; //etc
//MY QUESTION STARTS HERE****************
$DaysColumnRange2 = range (1, 4);
foreach ($DaysColumnRange2 as $DaysColumnRangeLoop2){
$SubtractedDaysColumns2 = $DaysColumnRangeLoop2 - $diff2format;
$MoveToNewDay2 = ${$Day.$SubtractedDaysColumns2};
$OriginalOldDay = $diff2format + $SubtractedDaysColumns2;
$sql2 = "UPDATE users SET Day$MoveToNewDay2='$OriginalOldDay' WHERE id='$id'";
if ($conn->query($sql2) === TRUE) {
echo "RECORDS UPDATED SUCCESFULLY";
} else {
echo "Error updating record: " . $conn->error;
}
}
数据库的输出如下。基本上它复制了Day3向左移动了2次,然后复制了Day4并向左移动了2次。第3天或第4天没有任何变化。
id--Run--Day1--Day2--Day3--Day4
1----N------3-----4-----3----4
但是我需要输出它来代替:
id--Run--Day1--Day2--Day3--Day4
1----N------3-----4-----0----0