php - MYSQL 使用多个函数时自动提交

标签 php mysql transactions autocommit

将尝试使这尽可能简单。我在我的函数中使用 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/

相关文章:

php - 并发访问MySQL数据库

php - 限制php mysql数据库的最大输入?

php - 如何在 PHP PDO 中使用 if 语句执行准备语句?

sql-server - 如何从 SQL Server 事务中刷新全文索引

php - 具有两种身份验证方法的 FOSUserBundle

javascript - 在 javascript 中使用 php 行?

php - 在不更改管理仪表板语言的情况下更改 wordpress 站点语言

php - 不符合条件 无法在 Yii2 中工作

JavaEE - 在事务之间共享资源