私は現在、基本的に PDO のラッパーを使用する PHP フレームワークを使用しており、問題に悩まされています。私は、次の任意の組み合わせである可能性のある任意の数の投稿変数を取るページを持っています:
":fullname" => $_POST['fullName'],
":universityID" => $_POST['university'],
":gpa" => $_POST['gpa'],
":major" => $_POST['major'],
":gradYear" => $_POST['gradYear'],
":photo" => "",
":description" => $_POST['description'],
"howDidYouHear" => $_POST['howDidYouHear']
そして、次のような更新ステートメントがあります。
$affectedRows = getDatabase()->execute('UPDATE user SET universityID = :universityID,
gpa = :gpa, etc, WHERE fullName=:fullName', array(':universityID' =>
$_POST['universityID'], ':gpa' => $_POST['gpa']));
問題は、この種の更新ステートメントを実行すると、テーブル内の古いデータを上書きしてしまうことです。そのほとんどはまだ有効です。私がしたいのは、新しい情報がある行のみを更新し、他の行には触れないことです。クエリ内で変更すべきものとすべきでないものを把握する方法はありますか?