這樣的條件:有一個表格在HTML和PHP haivng 120個字段左右它爲一個網站我正在提交這個表單去php頁面,我首先檢索所有值使用$ _REQUEST [],然後使用插入查詢將它們全部插入到我的mysql數據庫中相同表中的特定顏色中。現在我將不得不再次執行所有過程來更新這些值。因爲插入查詢和更新查詢的原因是非常不同的。如何使用mysql更新查詢和mysql一起插入查詢?
我不想寫另外100行代碼。有什麼方法可以使用我在插入查詢中寫入的代碼來更新數據。
這樣的條件:有一個表格在HTML和PHP haivng 120個字段左右它爲一個網站我正在提交這個表單去php頁面,我首先檢索所有值使用$ _REQUEST [],然後使用插入查詢將它們全部插入到我的mysql數據庫中相同表中的特定顏色中。現在我將不得不再次執行所有過程來更新這些值。因爲插入查詢和更新查詢的原因是非常不同的。如何使用mysql更新查詢和mysql一起插入查詢?
我不想寫另外100行代碼。有什麼方法可以使用我在插入查詢中寫入的代碼來更新數據。
另一種選擇,並根據需求和鍵,你可以使用:
replace into tbl (<cols>) values (<vals>)
如果不存在,或基於鍵(在一個查詢中插入/更新)
或更換,這將插入如果你只插入不希望插入兩次,你可以使用:
insert ignore into tbl (<cols>) values (<vals>)
其中如果記錄已經插入基於鑰匙,它優雅地忽略
INSERT INTO yourtable (field1, field2, field3, ...)
VALUES ($field1, $field2, $field3, ...)
ON DUPLICATE KEY UPDATE field1=VALUES(field1), field2=VALUES(field2), etc...
詳細構造here。
實際上,在MySQL中,插入的替代語法與更新語法非常相似。你可以寫
insert customer set customerid=12345, firstname='Fred', lastname='Jones
等
個人而言,我更喜歡這種語法,因爲它很容易看到什麼值進入每個字段。長字段列表的記錄尤其如此。
另一方面,它不是標準的SQL,因此如果您決定將您的應用程序移植到不同的數據庫引擎,則所有插入操作都必須重寫。
我偶爾使用的另一個選項是編寫一個小函數來創建插入和更新語句。然後你的函數的語法可以是相同的,不管生成的代碼有多不同。
是的,這正是我正在尋找,但我無法理解兩者之間的差異 (我的主要關鍵是不同城市的名稱,我真正想要的是,如果城市的名稱已經存在於數據庫中,它會更新數據爲其他城市添加一個新的行)在這種情況下哪兩個會更好 – Danny
嗨Danny,對於您的請求,您會想要使用替換。請記住,如果你的城市包括多個州,爲了避免城市名稱衝突(多個州的同一城市名稱),你可能想讓州和城市成爲一個唯一的關鍵點。這樣,當你進入時,它將同時使用城市和州,而不是更新一個城市在不同的狀態 –
謝謝,是的,我已經使州和市的主要。謝謝:) – Danny