ホームページ >バックエンド開発 >PHPチュートリアル >PDO でのトランザクション処理の詳細な紹介
PDO でのトランザクション処理の詳細な紹介
トランザクションは、一連のクエリおよび/または更新ステートメントで構成されます。 トランザクションを開始するには begin と starttransaction を使用し、トランザクションをロールバックするには rollback を、トランザクションをコミットするには commit を使用します。 トランザクションの開始後、複数の SQL クエリまたは更新ステートメントが存在する可能性があり、各 SQL が実行のために送信された後、それが正しく実行されたかどうかを判断するためのステートメントも存在し、すべてが実行された場合にロールバックするかどうかを決定します。正しく、トランザクションは最終的にコミットされます。トランザクションがロールバックされると、データベースはトランザクションが開始される前の状態のままになります。編集したファイルを保存せずに終了した場合、ファイルの元の外観が保持されるのと似ています。したがって、トランザクションはアトミック操作と見なすことができ、トランザクション内の SQL は完全に実行されるか、まったく実行されないかのどちらかです。
最初の 2 つの記事「PDO でのエラー処理の方法 1 - errorCode() メソッド 」、「PDO でのエラー処理の方法 2 - errorInfo() メソッド 」では、PDO でエラーを処理する方法を紹介しました。それでは、PDOでのトランザクション処理を詳しく紹介しましょう~
トランザクション処理の機能はPDOでも実現できます。応用方法は次のとおりです:
(1)transaction-beginTransaction()メソッドを開きます。
beginTransaction() メソッドは自動コミット モードをオフにし、トランザクションがコミットまたはロールバックされるまで再開しません。
(2) トランザクションのコミット - commit() メソッド
commit() メソッドはトランザクション送信操作を完了し、成功した場合は true を返し、そうでない場合は false を返します。
(3) トランザクションのロールバック - rollBack()メソッド
rollBack()メソッドはトランザクションのロールバック操作を行います。
prepare() メソッドとexecute() メソッドを通じてデータベースにデータを追加し、トランザクション処理メカニズムを通じてデータがデータベースに正しく追加できることを確認します。 具体的な手順は次のとおりです。
php ファイルを作成します。まずデータベース接続パラメータを定義し、try{...}catch{...} ステートメントを作成し、try{} ステートメントで PDO コンストラクターをインスタンス化し、データベースとの接続を完了し、beginTransaction() メソッドを通じてトランザクションを開始します。次に、$_POST を介して INSERT add ステートメントを定義します。 [] メソッドは、フォームで送信されたデータを取得し、prepare() メソッドとexecute() メソッドを通じてデータベースにデータを追加し、commit( 0 メソッドを実行し、最後に catch{} ステートメントでエラー メッセージを返し、 rollBack() メソッドはトランザクションのロールバック操作を実行します。 具体的なコードは次のとおりです。
<form action="3.php" name="form1" method="post"> 用户名:<input type="text" name="username"> 密码: <input type="password" name="password"> <input type="submit" name="Submit" value="提交"> </form> <?php header("Content-Type:text/html; charset=utf-8"); //设置页面的编码格式 $name =$_POST['username']; $password =$_POST['password']; if($_POST['username']!=""&&$_POST['password']!=""){ $dbms = "mysql"; // 数据库的类型 $dbName ="php_cn"; //使用的数据库名称 $user = "root"; //使用的数据库用户名 $pwd = "root"; //使用的数据库密码 $host = "localhost"; //使用的主机名称 $dsn = "$dbms:host=$host;dbname=$dbName"; try{ $pdo=new PDO($dsn,$user,$pwd);//初始化一个PDO对象,就是创建了数据库连接对象$pdo $pdo -> beginTransaction(); //开始事务 $query="insert into `user`(username,password) VALUES ('$name','$password')";//需要执行的sql语句 $res=$pdo->prepare($query);//准备查询语句 $res->execute(); //执行查询语句,并返回结果集 if($res->errorCode()){ echo "数据添加成功"; }else{ echo "数据添加失败"; } $pdo->commit(); //执行事务的提交操作 }catch (PDOException $e){ die("Error!:".$e->getMessage().'<br>'); $pdo -> rollBack(); //执行事务的回滚 } } ?>
最終的な出力結果は次のとおりです。
上で紹介したトランザクション処理を読んで、それが非常に簡単だと思いましたか? 学習した内容を統合して、次の記事で引き続き PDO のストレージ プロセスを紹介します。 , 「PDO のストレージ プロセスの詳細な紹介」をお読みください。
以上がPDO でのトランザクション処理の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。