Ini berarti Anda memerlukan transaksi .
Transaksi adalah serangkaian kueri yang semuanya dieksekusi ok atau jika salah satu gagal - semuanya gagal. Ini untuk memastikan Anda tidak berakhir dengan data sampah di tabel Anda.
Jangan
- Jangan gunakan multikueri.
- Jangan gunakan
mysql_*
fungsi. - Jangan gunakan sisipan massal.
Orang yang menyuruh Anda melakukan itu sama sekali tidak tahu apa yang mereka lakukan, abaikan saja.
Lakukan
- Gunakan PDO
- Gunakan pernyataan yang sudah disiapkan
- Siapkan pernyataan SEKALI, gunakan GANDA kali
Contoh kode - JANGAN salin tempel
$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();
Kode di atas akan menyimpan data dalam dua tabel HANYA jika kedua penyisipan berhasil.