2011-10-07 34 views
0

我試圖更新所有共享相同的字段名稱的多行。如何用相同的字段名更新多個mysql數據庫行?

的結構是這樣的:

+---+-------+--------+ 
|id | name | value | 
+---+-------+--------+ 
| 1 | color | red | 
| 2 | fruit | apple | 
| 3 | day | friday | 
+---+-------+--------+ 

所以,像這樣:

$config_data = "UPDATE system_config SET color = '$_POST[color]', fruit = '$_POST[fruit]', day = '$_POST[day]'"; 

$success = mysql_query($config_data); 

...將無法正常工作。我將如何執行此查詢?

+0

爲後人:不要'「UPDATE system_config SET color ='「.mysql_real_escape_string($ _ POST [color])。」',等等...'還有*驗證*輸入優先 – webbiedave

+1

這本質上是一個不可行的設計。表格是查詢和性能最差的。我會用規範化的方式正確地設計我的表格。 – HLGEM

+0

我沒有得到它...一個WordPress博客的選項表有超過150個這樣的結構,但每個人都問我爲什麼這樣做,並說沒有人這樣做。我究竟做錯了什麼?如果我有100個配置選項,存儲它們的最佳方式是什麼? – Oseer

回答

2

嘗試

$config_data = "UPDATE system_config SET value = '$_POST[color]' WHERE name = 'color';"; 
$success = mysql_query($config_data); 
$config_data = "UPDATE system_config SET value = '$_POST[fruit]' WHERE name = 'fruit';"; 
$success = mysql_query($config_data); 
$config_data = "UPDATE system_config SET value = '$_POST[day]' WHERE name = 'day'"; 
$success = mysql_query($config_data); 

instead.It的必要投入更多的查詢,在這種情況下

+0

男人,我試圖在一個查詢中得到它。我有15-20個值在一個表單中更新。 – Oseer

+1

@ user971230:*現在*您告訴我們。編輯您的問題以反映所有相關信息。 – webbiedave

0
update system_config 
set value = 
case 
when name = 'color' then 'something1' 
when name = 'fruit' then 'something2' 
when name = 'day' then 'something3' 
else value 
end 
+0

正如所寫的,這覆蓋了配置名稱而不是配置值。我試着當name ='language',然後value ='$ _POST [語言]',但它不起作用。 – Oseer

+0

啊,對不起。誤解。編輯我的答案。 –

+0

我把帖子價值放在你有'something1'等等。我做錯了什麼? '當name ='language',然後'$ _POST [language]''。你的建議看起來不錯,只是沒有更新任何東西。 – Oseer

相關問題