これは、トランザクション> 。
トランザクションは、すべてが正常に実行されるか、1つが失敗した場合、すべてが失敗するクエリのセットです。これは、テーブルにデータががらくたにならないようにするためです。
しないでください
- マルチクエリを使用しないでください。
-
mysql_*
は使用しないでください 関数。 - バルクインサートは使用しないでください。
それをするようにあなたに言う人々は、彼らが何をしているのか全く手がかりがないので、彼らを無視してください。
する
- PDO を使用します
- プリペアドステートメント を使用します
- ステートメントを1回準備し、複数回使用します
サンプルコード-コピーして貼り付けないでください
$dsn = 'mysql:dbname=testdb;host=127.0.0.1;charset=utf8mb4';
$user = 'dbuser';
$password = 'dbpass';
$pdo = new PDO($dsn, $user, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$insert['first'] = $pdo->prepare("INSERT INTO table SET col1 = :val, col2 = :val2");
$insert['second'] = $pdo->prepare("INSERT INTO another_table SET col1 = :val, col2 = :val2");
$pdo->beginTransaction();
$insert['first']->bindValue(':val', 'your value');
$insert['first']->bindValue(':val2', 'anothervalue');
$insert['first']->execute();
$insert['second']->bindValue(':val', 'your value');
$insert['second']->bindValue(':val2', 'anothervalue');
$insert['second']->execute();
$pdo->commit();
上記のコードは、両方の挿入が成功した場合にのみ、データを2つのテーブルに保存します。