2016-07-09 50 views
0

我有數據的PHP數組。 現在,我使用的是這樣一個循環:如何更新MySQL中的多行一行?

$updArray = array(1=>11,2=>12,3=>13); 
foreach($updArray as $id=>$value) 
{ 
    $query = "UPDATE table1 SET column1='$value' WHERE cart_id = '$id'"; 
    mysql_query($query,$link); 
} 

我想,如果數組包含數千行,這將是緩慢的。 有沒有辦法更新MySQL表(從數組中應用我的數據)沒有循環和更新每一行?

+3

的可能的複製[MYSQL - 在一個查詢中使用不同的值更新多行(http://stackoverflow.com/問題/ 25674737/mysql-update-multiple-rows-with-different-values-in-one-query) – julienc

+0

是的。對於小數據集,您可以使用IN()。對於較大的你可能會將更新信息存儲在一個單獨的文件中,並將其加入到表中以更新。 – Strawberry

回答

0

你可以嘗試建立一個單一的更新CASE語句,就像這樣:

UPDATE table1 
    SET column1 = CASE 
     WHEN cart_id = 1 THEN 11 
     WHEN cart_id = 2 THEN 12 
     ... 
     ELSE cart_id = cart_id 
    END 
+0

不,我有成千上萬行,我不想寫太多時。 – Piter

+0

@Piter你不寫。您的腳本將使用循環使用字符串和數組構建請求 –