Điều này có nghĩa là bạn cần một giao dịch .
Một giao dịch là một tập hợp các truy vấn mà tất cả đều thực hiện tốt hoặc nếu một truy vấn không thành công - tất cả chúng đều thất bại. Điều này là để đảm bảo rằng bạn không kết thúc với dữ liệu tào lao trong các bảng của mình.
Không
- Không sử dụng nhiều truy vấn.
- Không sử dụng
mysql_*
(các) chức năng. - Không sử dụng chèn hàng loạt.
Những người bảo bạn làm điều đó hoàn toàn không biết họ đang làm gì, hãy phớt lờ họ.
Làm
- Sử dụng PDO
- Sử dụng báo cáo đã chuẩn bị sẵn
- Chuẩn bị (các) báo cáo MỘT LẦN, sử dụng chúng NHIỀU LẦN
Mã mẫu - KHÔNG sao chép dán
$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();
Đoạn mã trên sẽ CHỈ lưu dữ liệu trong hai bảng nếu cả hai lần chèn đều thành công.