我如何检测已更新的mysql数据库中的字段或列?

时间:2018-11-05 10:15:56

标签: php mysql updates

我正在使用MVC概念开发应用程序,并且我想维护一个表,该表记录已更新的不同表中的列。

这是我的控制器中的查询:

if(!$error) {
    $NAME           = $_POST["NAME"];
    $FNAME          = $_POST["FNAME"];
    $SNAME          = $_POST["SNAME"];
    $DNAME          = $_POST["DNAME"];
    $DOB            = $_POST["DOB"];
    $IDMARK         = $_POST["IDMARK"];
    $ES1NAME        = $_POST["ES1NAME"];
    $ES2NAME        = $_POST["ES2NAME"];
    $LANG1          = $_POST["LANG1"];
    $LANG2          = $_POST["LANG2"];
    $MATHS          = $_POST["MATHS"];
    $SS             = $_POST["SS"];
    $SCIENCE        = $_POST["SCIENCE"];


    $table = $_POST['table'];
    $id = $_POST['id'];

    $queryStr = mysql_query("UPDATE db_parent.$table SET NAME = '$NAME', FNAME = '$FNAME', SNAME = '$SNAME', DNAME = '$DNAME', DOB = '$DOB', IDMARK = '$IDMARK', ES1NAME = '$ES1NAME', ES2NAME = '$ES2NAME', LANG1 = '$LANG1', LANG2 = $LANG2, MATHS = '$MATHS', SS = '$SS', SCIENCE = '$SCIENCE'  WHERE ID = '$id'") or die(mysql_error());

    $queryUpdate= mysql_fetch_array($queryStr);

    sys_url::redirect(sys_url::site("Department/childDepartment/Update?id=$id&table=$table"));

    return;
}

这是表格:

<form id = "form" name = "myForm" method = "POST" onsubmit = "" action = "<?= sys_url::site('Department/childDepartment/Update?id='.$_GET['id'].'&table='.$_GET['table'])?>" >
    <div class="row" >
        <input type = "hidden" name = "id" value = "<?= $_GET['id']; ?>" >
        <input type = "hidden" name = "table" value = "<?= $_GET['table']; ?>" >
        <div class="col-lg-2 col-xs-12 col-sm-6" >
            <label align = "left" > Name :</label >
            <div class="form-group" >
                <input class="form-control" name = "NAME" value = "<?= $student['NAME'] ?>" >
            </div >
        </div >
        <div class="col-lg-2 col-xs-12 col-sm-6" >
            <label align = "left" > Father's Name :</label>
            <div class="form-group">
                <input class="form-control" name="FNAME" value="<?= $student['FNAME'] ?>" >
            </div>
        </div>
        .
        .
        .
        .
        <div class="col-lg-2 col-xs-12 col-sm-4 pull-right">
            <div class="form-group">
                <button type="submit" value="1" name="search" class="btn btn-primary">UPDATE</button>
            </div>
        </div>
    </div>
</form>

该表单将编辑和更新字段。我还有另一个updates_table,我想记录从哪些表更新了哪些列。我不想保留整个行的记录,因为那样以后会过多地填充数据库。我该怎么做?我读过一些有关触发器和column_update()的内容,但不确定我是否理解正确。感谢您的支持。

1 个答案:

答案 0 :(得分:0)

感谢您的所有回复...无论如何,我已解决了该问题。

在运行UPDATE查询之前,我通过调用SELECT查询使用数组存储数据库中的旧数据。然后,使用foreach循环将来自表单的新数据与数组中的旧数据一一比较。如果输入数据与现有数据相同,则将其跳过。如果没有,那么我将使用另一个更新查询来用新数据更新表。