PDO::quote
PDO::setAttribute
PDO
PHP Manual

# PDO::rollBack

(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)

PDO::rollBack — トランザクションをロールバックする

### 説明

public bool PDO::rollBack ( void )

PDO::beginTransaction() によって開始された 現在のトランザクションをロールバックします。 有効なトランザクションがない場合は PDOException をスローします。

データベースがオートコミットモードに設定されている場合、 この関数はトランザクションをロールバックした後に オートコミットモードを元に戻します。

MySQL を含むいくつかのデータベースでは、DROP TABLE や CREATE TABLE のようなデータベース定義言語 (DDL) ステートメントがトランザクション中に 発行される場合、暗黙的なコミットが自動的に発行されます。 この暗黙的なコミットにより、そのトランザクション境界で 他のあらゆる変更をロールバックすることができなくなるでしょう。

### 返り値

成功した場合に `TRUE` を、失敗した場合に `FALSE` を返します。

### 例

例1 トランザクションをロールバックする

以下の例は、トランザクションを開始し、 変更をロールバックする前にデータベースを修正する 2 つのステートメントを発行します。 しかしながら MySQL では、DROP TABLE ステートメントは 自動的にトランザクションをコミットするので、 トランザクション中のどの変更もロールバックされません。

`<?php
/* トランザクションを開始する。オートコミットがオフになる */
$dbh->beginTransaction();
/* データベーススキーマとデータを変更する */
$sth = $dbh->exec("DROP TABLE fruit");
$sth = $dbh->exec("UPDATE dessert
SET name = 'hamburger'");
/* ミスに気づき、変更をロールバックする */
$dbh->rollBack();
/* データベース接続はオートコミットモードに戻る */
?>`

### 参考

- PDO::beginTransaction() - トランザクションを開始する
- PDO::commit() - トランザクションをコミットする
- トランザクションおよび自動コミット

PDO::quote
PDO::setAttribute
PDO
PHP Manual