6

我应该做

$dbh->beginTransaction();
try{

或者

try{
  $dbh->beginTransaction();
4

5 回答 5

5

没关系,它会运行代码而不管它的位置。但是你想把它放在rollback()中,如果你把它放在外面catch,它是不可读的。begin

我会在里面投票try

于 2012-09-16T00:14:22.277 回答
3

这可能并不重要。但是,最好beginTransaction try. 当beginTransaction失败时,它不应该执行rollback.

于 2013-08-12T09:06:13.953 回答
1

将其添加到try/catch块内,这样您就可以捕获任何内容PDOException

try {
    $dbh->beginTransaction();    // start transaction
    $stmt = $dbh->query($query); // run your query
    $dbh->commit();              // commit
} catch(PDOException $ex) {      // if exception, catch it
    $dbh->rollBack();            // rollback query
    echo $ex->getMessage();      // echo exception message
}
于 2012-09-16T00:11:34.903 回答
1

在这种情况下,这无关紧要,因为 beginTransaction 将在失败时返回 false。如果它抛出异常,你会希望它在嵌套的 try 块内(否则你会在捕获异常后执行 rollBack(),因为没有事务启动而失败)。

于 2012-09-16T00:15:49.250 回答
0

如果您想捕获 beginTranscation 方法应该抛出的可能错误,请选择第二个。

于 2012-09-16T00:12:37.183 回答