2011-11-16 48 views
1

在網站應用程序(如論壇)上的工作方案,用戶可以添加或編輯其重播。我迄今爲止使用的策略是使用不同的表單動作:一個用於插入,另一個用於更新。插入或更新 - 正確的方式

這是正確的方法還是我可以使用其他更容易維護的東西?

非常感謝!

回答

1

就我個人而言,我使用一個'編輯'變量與一個單一的形式。編輯表單時將edit變量設置爲true,對於創建新表單則設置爲false。我將這個變量(在表單中隱藏的元素)發送到處理數據的頁面,並且該函數確定是將INSERT還是UPDATE插入到數據庫中。

+0

但是,如果這是一個編輯,你必須發送ID以及 –

+0

當然,如果你正在編輯的東西,ID已經知道。 – rogerlsmith

1

您只能使用一個動作。如果在請求中沒有設置主鍵,那麼這是插入,否則是更新。

1

Insert or on duplicate key update意味着你可以有一個表單,如果它有一個在數據庫中的id,它將更新,否則它會插入。

+0

當主鍵是一個自動遞增的int時可能會導致一些問題(謹慎使用) – apokryfos

+0

@apokryfos您能提供有關可能的問題的更多信息嗎? –

+0

問題是,即使記錄更新(這意味着它不會返回匹配的記錄的實際ID),LAST_INSERT_ID()函數將返回AUTO_INCREMENT值。因此,如果稍後使用LAST_INSERT_ID(),只需確保您正在檢查正確的ID。這在頁面中提到,它只是很好的指向它。 – apokryfos