配列内のデータベースに挿入される一連のラジオボタンがあります。これは、最初から正常に機能します。
$query="INSERT INTO `notes_value` ( `style_color`, `note_id`, `value`, `created_at` ) VALUES ";
foreach ($params AS $key => $value) {
if (( $key != "form_key" ) && ( $key != "stylecolor" ) && ( $key != "key" )){
$values[] = "('$sku', '$key', '$value', NOW()) ";
}
}
$query .= implode(', ', $values) . ';';
ラジオボタンの状態が変更されたときにこれらの列を更新するようにしようとしているので、これを変更します:
$values[] = "('$sku', '$key', '$value', NOW()) ON DUPLICATE KEY UPDATE value = '$value'";
このクエリで選択された配列にラジオボタンが1つしかない場合は、機能して更新されます。
INSERT INTO `notes_value` ( `style_color`, `note_id`, `value`, `created_at` )
VALUES ('1893240720', '1', 'no', NOW())
ON DUPLICATE KEY UPDATE value = 'yes';
ただし、複数のボタンを選択すると、クエリが壊れます。
INSERT INTO `notes_value` ( `style_color`, `note_id`, `value`, `created_at` )
VALUES ('1893300667', '1', 'yes', NOW())
ON DUPLICATE KEY UPDATE value = 'no',
('1893300667', '2', 'yes', NOW())
ON DUPLICATE KEY UPDATE value = 'maybe';
個別に作成する必要がありますか、それとも重複をチェックしてからそれぞれをINSERT
更新するにはどうすればよいですか?これは単に構文が悪い場合ですか?value
note_id
編集
これまでの回答から、一度に複数の値を更新できる必要があるかどうかは明確ではなかったようです。ON DUPLICATE
異なる変数で複数の値を更新する必要がある場合、最後にどうすればよいかわかりません。