PHPマニュアル/PEARマニュアル | ユーザフォーラムで議論/質問 | マニュアル検索 | ハイライト | ハイライトオフ | ポータル | php spot

PDO::commit - トランザクションをコミットする | JavaScript入門&応用&リファレンスなら「JavaScriptist」

  

PDO::commit

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

PDO::commit トランザクションをコミットする

説明

public bool PDO::commit ( void )

トランザクションをコミットし、 次に PDO::beginTransaction() で新たなトランザクションが開始されるまで、 データベース接続をオートコミットモードに戻します。

返り値

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

エラー / 例外

有効なトランザクションがない場合に 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 文が実行された時点で自動的にトランザクションをコミットしてしまうものもあります。

参考


忘却曲線を使ってこの知識を確実に記憶に残す

フォーラムで「PDO::commit - トランザクションをコミットする」について話す
各種マニュアル: PHPマニュアル | PEARマニュアル | Smarty(英語)マニュアル | PHP-GTKマニュアル | PDO::commit - トランザクションをコミットする」をGoogle検索
copyright © 1997-2024 PHP ドキュメント作成グループ(ライセンス). provided by php spot. マニュアル: