我正在使用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()的内容,但我不确定我是否正确理解了它。谢谢大家的支持。
1条答案
按热度按时间tsm1rwdh1#
谢谢你的回复。。。不管怎样,我找到了解决问题的办法。
在运行update查询之前,通过调用select查询,我使用了一个数组来存储数据库中的旧数据。然后使用foreach循环将来自表单的新数据与数组中的旧数据逐一进行比较。如果传入数据与现有数据相同,则跳过它。如果没有,那么我使用另一个更新查询用新数据更新表。