将尝试使这尽可能简单。我在我的函数中使用 throw/catch。该函数接受名称、描述和一组用户。它将名称和描述添加到一个表中,然后获取用户数组,并执行一个单独的函数将它们添加到连接器表中。我将功能设置为关闭自动提交,直到输入最后一个用户然后提交。问题是,如果其中一个用户未能进入(由于外键约束),则交易不会退出。我正在调用一个单独的函数这一事实是否会“重置”自动提交并导致它无法按预期工作?我把回滚放在 Catch 子句中是不是做错了?
try
{
autocommit=0
run insert query
if query fails: throw error, rollback
else
for count of array
run another function (this function does more SQL and throws its own errors if it fails)
autocommit=1
}
catch
{
rollback, autocommit=1;
display error
}
希望我没有过度简化代码。任何帮助将不胜感激。
最佳答案
$this->dbh->beginTransaction();
try {
// do stuff
$this->dbh->commit();
} catch (PDOException $e) {
$this->dbh->rollBack();
throw $e;
}
关于php - MYSQL 使用多个函数时自动提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13942754/