亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Figuren

PDO 事務處理

PDO 事務對象方法

方法描述
beginTransaction()啟動一個事務
commit()提交一個事務
rollBack()回滾一個事務
inTransaction()檢測是否在一個事務內

注意:當需要使用事務的時候,數(shù)據(jù)庫表引擎不能是 MyISAM ,必須要是 InnoDB

<?php

try {
    $host = 'mysql:host=localhost;dbname=test';
    $pdo = new PDO($host, 'root', 'aaaaaa', [PDO::ATTR_AUTOCOMMIT => 0]);
    // 建表 SQL
    $sql = <<<EOF
        CREATE TABLE IF NOT EXISTS user_account(
            id INT UNSIGNED NOT NULL AUTO_INCREMENT,
            username VARCHAR(20) NOT NULL UNIQUE,
            money DECIMAL(8,2) NOT NULL, 
            PRIMARY KEY (id)
        )ENGINE=InnoDB DEFAULT CHARSET UTF8 COMMENT "用戶賬戶表";
EOF;
    $pdo->exec($sql); // 使用 PDO 對象的 exec()方法執(zhí)行建表語句
    /*$sql = 'INSERT INTO user_account (username, money) VALUES (:username, :money),(:username2, :money2)';
    $statement = $pdo->prepare($sql); // 預處理 SQL
    $statement->bindParam(':username', $username, PDO::PARAM_STR);
    $statement->bindParam(':money', $money);
    $statement->bindParam(':username2', $username2, PDO::PARAM_STR);
    $statement->bindParam(':money2', $money2);
    $username = 'luo';
    $money = 3000.00;
    $username2 = 'li';
    $money2 = 3000.00;
    $statement->execute(); // 執(zhí)行預處理*/
    // 開啟事務
    $pdo->beginTransaction();
    $res = $pdo->exec('UPDATE user_account SET money = money - 2000 WHERE username = "li"');
    if ($res == 0) {
        throw new PDOException('li 轉賬失敗');
    }
    $res2 = $pdo->exec('UPDATE user_account SET money = money + 2000 WHERE username = "luo"');
    if ($res2 == 0) {
        throw new PDOException('luo 接受轉賬失敗');
    }
    $pdo->commit();
} catch (PDOException $e) {
    echo $e->getMessage();
}


Vorheriger Artikel: N?chster Artikel: