我正在嘗試嘗試通過使用PHP的表單來查找通過表單更改給定表中數據的最佳和最有效的方法。更新或只插入已更改的列
該場景是一個表中的項目列表,如果您右鍵單擊編輯項目,則向MySQL請求所有數據並填充字段。
用戶可以在任何字段中更改或保留數據,然後按下保存,將所有內容都發送回PHP。
最簡單的辦法是隻更新所有列,無論它們是否發生了變化,即:
$this->model->set('name', 'some name string from the form', $itemId);
$this->model->set('price', 'number from the form', $itemId);
...etc...
所以可能我可以改變只是名稱和不必要的更新列,其餘與收到的數據相同的數據。 (作爲一個側面的問題,MySQL是否知道這一點,並忽略幕後更新?)
執行智能更新的好方法是比較兩個數組嗎?一個包含原始數據,另一個包含來自用戶的數據。如果給定索引的值不匹配,那麼它必須已經更改,更新也如此?
即一個很簡單的例子:
if($submittedValues['name'] != $originalValues['name'])
{
...Update...
}
在NULL值的情況下,我會得到它只是EM pty列中的值。如果它是存儲在左連接的表中的值,例如,項目序列號,其中不是每個項目都有一個,它會刪除一行。 – imperium2335
複選框也可能會導致問題,因爲他們沒有出現在請求中,如果他們沒有打勾,即你不會得到...&checkbox1 =&somethingelse = ... – imperium2335
是的複選框,你應該在後端處理(PHP的腳本)如果沒有值被髮送,那將意味着它沒有被選中 –