在 PHP 的 Service 层实现事务管理,通常采用以下步骤:
- 开启事务:
在 Service 层的方法开始时,使用数据库连接对象(如 MySQLi 或 PDO)开启一个新的事务。例如,如果你使用的是 MySQLi,你可以这样做:
$mysqli = new mysqli($servername, $username, $password, $dbname); if ($mysqli->connect_error) { die("连接失败: " . $mysqli->connect_error); } $mysqli->begin_transaction(); // 开启事务
- 执行 SQL 语句:
在事务中执行你的数据操作 SQL 语句。如果所有操作都成功,那么事务可以正常提交;如果有任何操作失败,事务需要回滚。
// 示例 SQL 语句 $sql1 = "INSERT INTO users (username, email) VALUES ('John', 'john@example.com')"; $sql2 = "UPDATE accounts SET balance = balance - 100 WHERE user_id = 1"; if (!$mysqli->query($sql1)) { echo "Error: " . $sql1 . "
" . $mysqli->error; $mysqli->rollback(); // 回滚事务 exit; } if (!$mysqli->query($sql2)) { echo "Error: " . $sql2 . "
" . $mysqli->error; $mysqli->rollback(); // 回滚事务 exit; }
- 提交事务:
如果所有 SQL 语句都成功执行,那么你需要提交事务以使更改生效。
$mysqli->commit(); // 提交事务
- 关闭数据库连接:
在操作完成后,记得关闭数据库连接。
$mysqli->close();
这是一个简单的例子,实际项目中可能需要根据具体需求进行调整。另外,也可以考虑使用 PHP 框架(如 Laravel、Symfony 或 Yii)来简化事务管理。这些框架通常提供了更高级的事务控制功能,如自动提交、回滚和隔离级别设置等。