この記事では、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(); //トランザクション処理を開始 $price=500; $sql="更新 zhanghao set 価格=価格-{$価格} ここで id=1"; $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 への転送に失敗しました"); echo "トランザクションが成功しました!"; $pdo->commit();//トランザクションが成功したら送信します }catch(PDOException $e){ echo $e->getMessage(); $pdo->rollback(); } $pdo->setAttribute(PDO::ATTR_AUTOCOMMIT, 1);//自動送信、最終的に自動送信されないと転送は失敗します //エラー報告モードを設定 ERRMODE_SILENT ERRMODE_WARNING |
http://www.bkjia.com/PHPjc/630684.html