这是我的脚本的结构:
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是如何编译我的脚本的呢?我的剧本结构还好吗?(不需要改变什么?)
发布于 2016-07-14 01:57:22
如果您的表是MYISAM,那么事务就无法工作。
但是,mysql不会中断,事务函数/方法不会抛出它们似乎正常工作的错误,除非每次数据库更新都是在发生时提交的。
https://stackoverflow.com/questions/38364260
复制相似问题