ユーザープロファイル編集ページの例を挙げます。フォーム内には 12 の異なるフィールドがあります (年齢、性別、喫煙、飲酒など)。これらのフィールドはすべて単一のテーブルにあります。ユーザーがデータを保存すると、1 つのフィールドのみが変更された場合でも、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 のパフォーマンスが向上する可能性があります。これは意味がありますか、それとも不必要に複雑になっているだけですか?