2016-07-09 17 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你不写。您的脚本将使用循环使用字符串和数组构建请求 –