このようなmysqlテーブルがあるとします
id, userid, days, start, and close
そして、このような各列のデータがあります-
1, 3, mon, 01.00, 02.00,
2, 3, tue, 03.00, 05.00,
3, 3, wed, 04.00, 06.00,
4, 3, thu, 05.00, 07.00,
5, 3, fri, 06.00, 08.00,
6, 3, sat, 07.00, 10.00,
7, 3, sun, 08.00, 12.00,
このデータを使用して、テーブルを更新または挿入する必要があります。(ユーザーIDがテーブルに存在しない場合は挿入するか、ユーザーIDがデータベースに存在する場合は更新する必要があります。)
これに対して mysql の単一クエリを作成する方法はありますか? そこで試してみましたINSERT ... ON DUPLICATE KEY UPDATE
が、単一の行しか編集できません。つまり、を使用して複数の行でテーブルを挿入または更新することはできませんINSERT ... ON DUPLICATE KEY UPDATE
。
現時点では、挿入と更新に2つの異なるクエリを使用しています
これは私の挿入クエリです -
$q = "INSERT INTO availability (userid, days, opentime, closetime)
VALUES (?, 'Monday', ?, ?),
(?, 'Tuesday', ?, ?),
(?, 'Wednesday', ?, ?),
(?, 'Thursday', ?, ?),
(?, 'Friday', ?, ?),
(?, 'Saturday', ?, ?),
(?, 'Sunday', ?, ?)";
$stmt = mysqli_prepare($dbc, $q);
mysqli_stmt_bind_param($stmt, 'issississississississ',
$userId, $monOpen, $monClose,
$userId, $tueOpen, $tueClose,
$userId, $wedOpen, $wedClose,
$userId, $thuOpen, $thuClose,
$userId, $friOpen, $friClose,
$userId, $satOpen, $satClose,
$userId, $sunOpen, $sunClose);
// Execute the query:
mysqli_stmt_execute($stmt);