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

mccptt67  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(536)

我正在使用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\u表,我想记录哪些列的表已经更新。我不想保留整行的记录,因为这样以后会使数据库过多。我该怎么做?我在某个地方读到了关于触发器和列\u update()的内容,但我不确定我是否正确理解了它。谢谢大家的支持。

tsm1rwdh

tsm1rwdh1#

谢谢你的回复。。。不管怎样,我找到了解决问题的办法。
在运行update查询之前,通过调用select查询,我使用了一个数组来存储数据库中的旧数据。然后使用foreach循环将来自表单的新数据与数组中的旧数据逐一进行比较。如果传入数据与现有数据相同,则跳过它。如果没有,那么我使用另一个更新查询用新数据更新表。

相关问题