2013-08-02 80 views
0

我有一個問題。我有設置表(ID,參數,名稱)與網站的很多設置。當我嘗試更新這就是設置,我這樣做(親自爲每個參數):MySQL多個更新:許多查詢相當於沒有foreach()

...$sql = "UPDATE settings SET `value` = ? WHERE param = ?"; 
$DB->query($sql, $_POST['SITE_NAME'], 'SITE_NAME'); 
$sql = "UPDATE settings SET `value` = ? WHERE param = ?"; 
$DB->query($sql, $_POST['SITE_DESC'], 'SITE_DESC');... 

等。如何我可以毫不多個查詢更新我的表中的數據?

回答

1

UPDATE只支持一個WHERE條件,所以它是不適合你想要的東西。但是,如果你有行的ID(我假設ID是主鍵),你可以這樣做:

INSERT INTO settings (ID, value) VALUES (id1, value1) (id2, value2) ... 
ON DUPLICATE KEY UPDATE value = VALUES(value) 
+0

像INSERT INTO設置(PARAM,值)VALUES( 「SITE_NAME」,「HTTP:/ /www.com「),(」SITE_DESC「,」aaa「)ON DUPLICATE KEY UPDATE value = VALUES(value)? – IsError

+0

如果'param'是一個主鍵或定義爲'UNIQUE',那麼這將工作。這個語句所做的就是試圖將'VALUES'後面的元組插入到表中,但是如果由於重複的鍵違規而失敗,它會執行'UPDATE'部分。請參閱文檔:http://dev.mysql.com/doc/refman/5.5/en/insert-on-duplicate.html –

0

退房的UPDATE語句

語法通常你可以寫

UPDATE <table> SET <col1> = <val1>, <col2> = <val2> ... WHERE ... 

Similar post here