在MySQL的末尾PHP PHP更新为0()

时间:2017-06-13 23:36:50

标签: php mysql foreach

我尝试根据之前的更新日期更新MySQL数据库中的多个单元格。我有一个问题,未更改,尾随单元格更新为0。

数据库表如下所示(对于Day#,默认值为0; N =最后更新日期):

id--Run--Day1--Day2--Day3--Day4

1----N------1-----2-----3----4

以下代码执行以下操作:

  1. 检索column = Run,id = 1
  2. 下的数据库条目
  3. 从今天起减去该日期。
  4. 使用该差异将第1天 - >第4天的数据库移至左侧。
  5. 差异为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>

    **

    ------------------ UPDATE --------------

    **

    本节是为了澄清我的问题。

    我们现在就说这是我的数据库:

    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
    

0 个答案:

没有答案