我将以用户个人资料编辑页面为例。表格中有 12 个不同的字段(年龄、性别、吸烟、饮酒……)。所有这些字段都在单个表中。当用户保存数据时,mysql update 语句用于设置所有数据,即使只更改了一个字段。
UPDATE profile SET age=22, smoke=1, drink=1, ...
但我想知道这是否是正确的方法。更好的方法是首先检查哪个字段已更改并仅为该字段设置数据?为此,我会将所有当前值放入隐藏输入中。它看起来像这样:
<input type="hidden" name="oldAge" value="<?php echo $age; ?>" />
<input type="text" name="age" value="<?php echo $age; ?>" />
<input type="hidden" name="oldGender" value="<?php echo $gender; ?>" />
<input type="text" name="gender" value="<?php echo $gender; ?>" />
<?php
//...
if($_POST['oldAge']!=$_POST['age']){
$updateQuery .= ", age=$_POST['age']";
}
if($_POST['oldGender']!=$_POST['gender']){
$updateQuery .= ", gender=$_POST['gender']";
}
//...
?>
通过这种方式设置的数据更少,这可以使 mysql 性能更好。这是否有任何意义,还是只是不必要地使事情复杂化?