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 メソッドがスローする可能性のあるエラーをキャッチしたい場合は、2 番目のエラーに進みます。

于 2012-09-16T00:12:37.183 に答える