我的网络应用程序中有一个功能,表格是“可快速编辑的”,也就是说,它的单元格可以直接编辑。当用户保存他的更改时,客户端将更改的行、更改的列(不包括未更改的列,只是为了澄清)及其相应的 ID 发送到服务器。
为了UPDATE
有效地进行查询,我使用了 PDO 的预处理语句功能。这是我目前提出的等效声明:
UPDATE table
SET
col1 = :arg_col1,
col2 = :arg_col2,
col3 = :arg_col3
WHERE
ID = :arg_ID
然后我想出了这个问题,我无法将列设置为其当前值。因为只提交了一行中已编辑的列,所以我只需要将数据绑定到它们各自的列。例如,如果只有col1
andcol2
被改变,结果语句应该是
UPDATE table
SET
col1 = 'new data',
col2 = 'an edit',
col3 = col3 /* Use the current value of the column */
WHERE
ID = 153454
直接修改语句肯定会使使用相同的预处理语句更新多行的性能提升无效。可悲的是,PDO 似乎没有将列绑定到其当前值的选项。
我应该如何解决这个问题?
附加:出于性能原因,我不希望发送所有列。