创建一个函数来处理事务的开始、提交和回滚。
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'); // 这里仍然会终止脚本,但事务会被正确回滚
});