Вот структура моего скрипта:Перенаправление перед выполнением фиксации()
try {
$dbh_conn->beginTransaction();
$stmt1 = $dbh_conn->prepare("UPDATE ...");
$stmt1->execute(array($val1));
if (condition 1) {
$stmt2 = $dbh_conn->prepare("DELETE ...");
$stmt2->execute(array($val2));
header('location: ../page1');
exit;
} else {
header('location: ../page2');
exit;
}
$dbh_conn->commit();
} catch(PDOException $e) {
$dbh_conn->rollBack();
echo $e;
}
Это удивительно работает .. Как вы видите, есть if - else
утверждение (всегда один из них будет выполнен), которые оба блока (оба if
и else
) имеют exit;
. Также $dbh_conn->commit();
строка после этого if - else
заявление.
На самом деле эти два запроса не должны выполняться. Потому что есть exit;
до commit()
. Но оба запроса выполняются. Итак, как PHP компилирует мой скрипт? И моя структура скриптов в порядке? (не нужно что-то менять?)
'exit' Завершает работу скрипт прямо здесь! Но если у вас установлен AUTO-COMMIT, то, если вы не запустите «rollback», данные будут зафиксированы – RiggsFolly
На самом деле есть еще одна возможность! Являются ли эти таблицы MYISAM, потому что транзакции не работают на MYISAM, но это позволяет использовать синтаксис транзакций – RiggsFolly
@RiggsFolly Yay .. это тот. –