Mysqlデータを一括で更新するには?このようなものを定義する方法:
UPDATE `table`
WHERE `column1` = somevalues
SET `column2` = othervalues
次のような値を使用します。
VALUES
('160009'),
('160010'),
('160011');
およびその他の値:
VALUES
('val1'),
('val2'),
('val3');
多分mysqlでは不可能ですか? PHPスクリプト?
あなたの場合の最も簡単な解決策は、 ON DUPLICATE KEY UPDATE
構築。それは本当に速く動作し、簡単な方法で仕事をします。
INSERT into `table` (id, fruit)
VALUES (1, 'Apple'), (2, 'orange'), (3, 'Peach')
ON DUPLICATE KEY UPDATE fruit = VALUES(fruit);
または CASE
構築を使用する
UPDATE table
SET column2 = (CASE column1 WHEN 1 THEN 'val1'
WHEN 2 THEN 'val2'
WHEN 3 THEN 'val3'
END)
WHERE column1 IN(1, 2 ,3);
持っている「バルク」データが動的で、PHP(結局、タグを付けた))から来ている場合、クエリは次のようになります。
INSERT INTO `foo` (id, bar)
VALUES
(1, 'pineapple'),
(2, 'asian pear'),
(5, 'Peach')
ON DUPLICATE KEY UPDATE bar = VALUES(bar);
およびPHPは、既存の配列からこれを生成します(配列が次のような形式であると仮定します:
$array = (
somevalues_key => othervalues_value
);
)は次のようになります(決して最良の方法ではありません(たとえば、値のエスケープやサニタイズは行いません)、ほんの一例です):
$pairs = array();
foreach ($array as $key => $value) {
$pairs[] = "($key, '$value')";
}
$query = "INSERT INTO `foo` (id, bar) VALUES " . implode(', ', $pairs) . " ON DUPLICATE KEY UPDATE bar = VALUES(bar)";
Implodeを使用して、mysqlをwhereステートメントで一括更新できます。
$requete = $pdo->prepare("update table_name set field = 1 where id in(".implode(', ', $ids).")");
$requete->execute();
$ idsは配列です
配列形式のデータがある場合は、これを試してください
クエリは"UPDATE table WHERE column1 = ? SET column2 = ?"
以下のように設定します
foreach($data as $key => $value) {
$query->bind_param('ss', $key, $value);
$query->execute();
}
うまくいくことを願っています。
this からの参照。