PDO事务有异常

时间:2014-05-03 09:22:47

标签: php exception pdo transactions

我遇到了解决以下问题的麻烦。让我们假设我有这个:

class UserMapper{
 private $Pdo;

 function __construct(PDO $Pdo) {
   $this->Pdo = $Pdo;
 }

 function DeleteUser(UserID){
   try{
     $Pdo->beginTransaction();
     // some logic here which eventually throws exception
     $Pdo->commit();
   }
   catch(Exception $e){
     // exception thrown from the upper code goes here
     // I need to log error with further details into some event log, e.g. like this
     $EventLog->LogEvent("error occured" . $e->getMessage()); // 
   }
 }

上面代码的问题在于,如果捕获了异常,那么Pdo当前位于" beginTranstacion"状态,因此日志不会在数据库中更新。

嗯,这可以通过在catch事件中提交来修复,但是当没有异常时它会导致问题。

有没有解决方法我可能会失踪?

1 个答案:

答案 0 :(得分:1)

您需要$ Pdo-> rollback()来恢复catch块中的数据库更改并告诉您的用户出错了。