2016-07-09 11 views
0

私はデータを持つPHP配列を持っています。 さて、私はこのようなサイクルを使用しています:MySQLの複数の行を1行で更新するには?

$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 - 1つのクエリ内の異なる値を持つUPDATE複数の行](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

@ピーターあなたは書いていません。あなたのスクリプトはループを使って文字列と配列を使って要求を構築します –

関連する問題