テーブルが "クイック編集可能" である、つまりセルを直接編集できる Web アプリの機能があります。ユーザーが変更を保存すると、クライアントは変更された行、変更された列 (変更されていない列を除く)、および対応する ID をサーバーに送信します。
クエリを効率的に行うためにUPDATE
、PDO のプリペアド ステートメント機能を使用しています。これは、私が現在思いついた同等のステートメントです。
UPDATE table
SET
col1 = :arg_col1,
col2 = :arg_col2,
col3 = :arg_col3
WHERE
ID = :arg_ID
次に、列を現在の値に設定できないというこの問題を思いつきました。行内の編集された列のみが送信されるため、データをそれぞれの列にバインドするだけで済みます。たとえば、 と のみcol1
がcol2
変更された場合、結果のステートメントは次のようになります。
UPDATE table
SET
col1 = 'new data',
col2 = 'an edit',
col3 = col3 /* Use the current value of the column */
WHERE
ID = 153454
ステートメントを直接変更すると、同じ準備済みステートメントを使用して複数の行を更新することによるパフォーマンスの向上が確実に無効になります。残念ながら、PDO には、列を現在の値にバインドするオプションがないようです。
この問題を解決するにはどうすればよいですか?
追加:パフォーマンス上の理由から、すべての列を送信したくありません。