php、pdomysqlでのpdoのMysqlトランザクション使用例
この記事の例では、php での pdo の mysql トランザクション処理の使用法について説明します。参考のためにみんなで共有してください。具体的な分析は次のとおりです:
php+mysqlトランザクション処理のいくつかのステップ:
1. 自動送信をオフにする 2. トランザクション処理を有効にする 3. 例外が発生した場合は自動的に例外プロンプトをスローし、ロールバックする 4. 自動送信をオンにする
注: MySQL は、この InnoDB ドライバーを使用したトランザクション処理のみをサポートします。デフォルトの MyIsAM ドライバーはこれをサポートしません。サンプル コードは次のとおりです。
コードをコピーします コードは次のとおりです:
試してください{
$pdo=new pdo("mysql:host=localhost;dbname=mydb", "root", "root", array(PDO::ATTR_AUTOCOMMIT=>0));//最後に、自動送信をオフにします
//$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT, 0);//これは、属性メソッドを設定することで自動送信をオフにします。これは上記の関数と同じです
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//例外処理をオンにする
}catch(PDOException $e){
echo "データベース接続に失敗しました:".$e->getMessage();
終了します;
}
/*
*トランザクション処理
*
* * 張三は李斯から2,000元のコンピューターを購入しました
* * Zhang San の口座から 2,000 元を差し引いてください
* * Li Si のアカウントに 2,000 元を追加します
* * 製品リストから 1 台のコンピューターを削除します
* * MyIsAM InnoDB
*/
試してください{
$ pdo-> begintransaction(); //トランザクション処理を開始
$価格= 500
$sql="id=1 の Zhanghao 設定価格 = 価格 - {$price} を更新します";
$affected_rows=$pdo->exec($sql);
if(!$affected_rows)
throw new PDOException("Zhang San's transfer failed");//そのエラーは例外をスローします
$sql="張豪設定価格=価格+{$価格}を更新します (id=3)";
$affected_rows=$pdo->exec($sql);
if(!$affected_rows)
throw new PDOException("Li Si への転送に失敗しました");
エコー「トランザクションが成功しました!」
$pdo->commit();//トランザクションが成功したら送信します
}catch(PDOException $e){
エコー $e->getMessage();
$pdo->rollback();
}
$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT, 1);//自動送信、最終的に自動送信されないと転送は失敗します
//エラー報告モードを設定します ERRMODE_SILENT ERRMODE_WARNING
?>
この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。
http://www.bkjia.com/PHPjc/933597.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/933597.html
技術記事 php、pdomysql での pdo の mysql トランザクション処理の使用例 この記事では、php での pdo の mysql トランザクション処理の使用方法について説明します。参考のためにみんなで共有してください。具体的な分析は次のとおりです: php+mysql トランザクション...