Вы можете использовать приведенный ниже способ использования функций отката и фиксации.
mysqli_query($con, "SET AUTOCOMMIT=0");
mysqli_query($con,"START TRANSACTION");
$insertMain = mysqli_query($con,''); // Insert query for Sales Order Master (so_mstr) table
foreach(($order_details['order_details'] as $line_item) {
$insertChild = mysqli_query($con,''); // Insert query for Sales Order Details (sod_det) table
if(!$insertChild){
break;
}
}
if($insert1 && $insert2) {
mysqli_query($con,"COMMIT");
} else {
mysqli_query($con,"ROLLBACK");
}
mysqli_query($con, "SET AUTOCOMMIT=1");
обновление : если вы пользуетесь mysqli, то вы можете сделать следующее:
$mysqli->begin_transaction();
$insertMain = $mysqli->query(''); // Insert query for Sales Order Master (so_mstr) table
foreach(($order_details['order_details'] as $line_item) {
$insertChild = $mysqli->query(''); // Insert query for Sales Order Details (sod_det) table
if(!$insertChild){
break;
}
}
if($insert1 && $insert2) {
$mysqli->commit();
} else {
$mysqli->rollback();
}
СОВЕТ : если вы используете более старую версию PHP как 5.5.0, вы не можете использовать $mysqli->begin_transaction();
и должны использовать $mysqli->autocommit(false);
в начале и $mysqli->autocommit(true);
в конце вместо