Saya memiliki tabel Master Pesanan Penjualan (so_mstr) dan tabel anak Detail Pesanan Penjualan (sod_det). Saya menerima catatan detail dari array $_POST[] dan sedang menyiapkan catatan master di dalam skrip itu sendiri. Skrip saya diharapkan berfungsi seperti berikut.
- Masukkan Catatan Utama.
- Masukkan Catatan Detail menggunakan PHP
for loop
(kueri untuk setiap catatan detail.) - Perbarui tabel lain setelah berhasil pada Langkah 1 & 2.
Seluruh proses harus dikembalikan jika salah satu langkah gagal.
Saya telah mencoba kode berikut sejauh ini. Itu terus memasukkan catatan detail bahkan jika permintaan penyisipan master gagal. Adakah yang tahu bagaimana memastikan bahwa semua kueri berjalan dengan sukses atau memutar kembali seluruhnya jika ada yang gagal?
mysqli_autocommit($conn, FALSE);
mysqli_begin_transaction();
$insert_mstr = 'insert into so_mstr(...) values(...)';
mysqli_query($conn, $insert_mstr);
foreach ($order_details['order_details'] as $line_item) {
$insert_line = 'INSERT INTO sod_det(...) values(...)';
mysqli_query($conn, $insert_line);
}
if(mysqli_commit($conn)){
insert_ar_reco(); // inserts into another table
increment_soseq($conn, $param); // updates a table
}
else{
echo 'Error occurred! transaction rolled back.';
}