隔离已更新的字段

时间:2015-07-10 07:46:05

标签: php sql

我正在尝试检查现有字段是否已更改并识别它,以便稍后将其添加到更改表中。有关如何这样做的任何想法?

 if (isset($_POST['submit'])) 
    {
        $sql = "SHOW COLUMNS FROM Employees";
        $result = mysqli_query($con,$sql);
         while($row = mysqli_fetch_array($result)){
                    $tempname = $row['Field'];
                    $sql2 = "UPDATE Employees SET ".$row['Field']."= '$_POST[$tempname]' WHERE AFNumber='".$_GET["af"]."'";
                    $result2 = mysqli_query($con,$sql2);
                    if ($con->query($sql2) === TRUE) {
                    } else {
                        echo "Error: " . $sql2 . "<br>" . $con->error;
                        echo '<script>swal("Error", "Something went wrong '.$con->error.'", "error");</script>';
                    }

1 个答案:

答案 0 :(得分:1)

首先,我认为你错过了".$var."这一行:

$sql2 = "UPDATE Employees SET ".$row['Field']."= '$_POST[$tempname]' WHERE AFNumber='".$_GET["af"]."'";

它应该是这样的:

$sql2 = "UPDATE Employees SET ".$row['Field']."= '".$_POST[$tempname]."' WHERE AFNumber='".$_GET["af"]."'";

您可以先执行选择查询,以根据要更新的数据进行区分

// get the rows that will be changed
$sqlOldData = "SELECT * FROM Employees WHERE AFNumber='".$_GET["af"]."' AND (".$row['Field']." NOT LIKE '".$_POST[$tempname]."')";

然后更新表格。

问:但有一个问题,至于将它集成到代码中,请给我任何帮助,我只是从这个领域开始:

$sql3 = "INSERT INTO Changes (Table, AFNumber, Attribute,DateChanged,HRUser,OldValue,NewValue) VALUES ('Employees', '".$_GET["af"]."', '".$row["Field"]."', '".date('dd/m/Y HH:mm:ss')."', '$login_session', '', '$_POST[$tempname]')";

注意:首先,您再次错过了一些字符串突破:

  • '$login_session' - &gt; '".$login_session."'
  • '$_POST[$tempname]' - &gt; '".$_POST[$tempname]."'

所以你得到:

$sql3 = "INSERT INTO Changes (Table, AFNumber, Attribute,DateChanged,HRUser,OldValue,NewValue) VALUES ('Employees', '".$_GET["af"]."', '".$row["Field"]."', '".date('dd/m/Y HH:mm:ss')."', '".$login_session."', '', '".$_POST[$tempname]."')";

A:采用$resultOldData$sqlOldData

的结果

这应该有效:

while($rowOldData = mysqli_fetch_array($result))
{
    $sql3 = "INSERT INTO Changes (Table, AFNumber, Attribute,DateChanged,HRUser,OldValue,NewValue) VALUES ('Employees', '".$_GET["af"]."', '".$row["Field"]."', '".date('dd/m/Y HH:mm:ss')."', '".$login_session."', '".$rowOldData[$row['Field']]."', '".$_POST[$tempname]."')";
    mysqli_query($con,$sql3);
}