やるべきか
$dbh->beginTransaction();
try{
または
try{
$dbh->beginTransaction();
それは実際には問題ではありません。その位置に関係なくコードを実行します。しかし、 を に入れたいのですが、その設定でrollback()
は、外側catch
に置くと読み取れません。begin
の中で投票しtry
ます。
それはおそらく本当に問題ではありません。ただし、 は のbeginTransaction
外側に配置することをお勧めしtry
ます。がbeginTransaction
失敗した場合、 を実行すべきではありませんrollback
。
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
}
この場合、beginTransaction は失敗すると false を返すため、問題ではありません。例外がスローされた場合は、ネストされた try ブロック内に配置する必要があります (それ以外の場合は、トランザクションが開始されていないために失敗する例外をキャッチした後に rollBack() を実行します)。
beginTranscation メソッドがスローする可能性のあるエラーをキャッチしたい場合は、2 番目のエラーに進みます。