我正在使用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()的内容,但不确定我是否理解正确。感谢您的支持。
答案 0 :(得分:0)
感谢您的所有回复...无论如何,我已解决了该问题。
在运行UPDATE查询之前,我通过调用SELECT查询使用数组存储数据库中的旧数据。然后,使用foreach循环将来自表单的新数据与数组中的旧数据一一比较。如果输入数据与现有数据相同,则将其跳过。如果没有,那么我将使用另一个更新查询来用新数据更新表。