PDO::commit
(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)
PDO::commit — トランザクションをコミットする
説明
トランザクションをコミットし、 次に PDO::beginTransaction() で新たなトランザクションが開始されるまで、 データベース接続をオートコミットモードに戻します。
パラメータ
この関数にはパラメータはありません。
エラー / 例外
有効なトランザクションがない場合に PDOException をスローします。
注意: 例外は、
PDO::ATTR_ERRMODE
属性がPDO::ERRMODE_EXCEPTION
ではない場合でも発生します。
例
例1 基本的なトランザクションをコミットする
<?php
/* トランザクションを開始する。オートコミットがオフになる */
$dbh->beginTransaction();
/* 複数レコードを追加する。全部成功か全部失敗のどちらかになる */
$sql = 'INSERT INTO fruit
(name, colour, calories)
VALUES (?, ?, ?)';
$sth = $dbh->prepare($sql);
foreach ($fruits as $fruit) {
$sth->execute(array(
$fruit->name,
$fruit->colour,
$fruit->calories,
));
}
/* 変更をコミットする */
$dbh->commit();
/* データベース接続はオートコミットモードに戻る */
?>
例2 DDL トランザクションをコミットする
<?php
/* トランザクションを開始する。オートコミットがオフになる */
$dbh->beginTransaction();
/* データベーススキーマを変更する */
$sth = $dbh->exec("DROP TABLE fruit");
/* 変更をコミットする */
$dbh->commit();
/* データベース接続はオートコミットモードに戻る */
?>
注意: DDL 文の操作にトランザクションが使えないデータベースもあります。 単にエラーになるだけのものもあれば、(MySQL などのように) DDL 文が実行された時点で自動的にトランザクションをコミットしてしまうものもあります。
+add a note
User Contributed Notes 1 note
re_action ¶
9 years ago
Keep in mind this bug: https://bugs.php.net/bug.php?id=66528
you could not rely on commit() return value while using MySql
↑ and ↓ to navigate •
Enter to select •
Esc to close
Press Enter without
selection to search using Google