function executeWithTransaction(callable $callback) {
    try {
        Db::pdo()->beginTransaction();
        $callback();
        Db::pdo()->commit();
    } catch (Exception $e) {
        Db::pdo()->rollBack();
        error_log($e->getMessage());
        throw $e; // 可选:重新抛出异常以便上层处理
    } finally {
        if (Db::pdo()->inTransaction()) {
            Db::pdo()->rollBack();
        }
    }
}

// 使用封装的函数
executeWithTransaction(function () {
    Db::pdo()->exec("INSERT INTO table1 (column1) VALUES ('value1')");
    die('ssss'); // 这里仍然会终止脚本,但事务会被正确回滚
});

标签: none

添加新评论