ホームページ  >  記事  >  バックエンド開発  >  PDO でのトランザクション処理の詳細な紹介

PDO でのトランザクション処理の詳細な紹介

黄舟
黄舟オリジナル
2017-04-28 17:47:112396ブラウズ

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[&#39;username&#39;];
$password =$_POST[&#39;password&#39;];
if($_POST[&#39;username&#39;]!=""&&$_POST[&#39;password&#39;]!=""){
    $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 (&#39;$name&#39;,&#39;$password&#39;)";//需要执行的sql语句
    $res=$pdo->prepare($query);//准备查询语句
    $res->execute();            //执行查询语句,并返回结果集
    if($res->errorCode()){
        echo "数据添加成功";
    }else{
        echo "数据添加失败";
    }
    $pdo->commit();            //执行事务的提交操作
}catch (PDOException $e){
    die("Error!:".$e->getMessage().&#39;<br>&#39;);
 $pdo -> rollBack();             //执行事务的回滚
}
}
?>

最終的な出力結果は次のとおりです。

PDO でのトランザクション処理の詳細な紹介

上で紹介したトランザクション処理を読んで、それが非常に簡単だと思いましたか? 学習した内容を統合して、次の記事で引き続き PDO のストレージ プロセスを紹介します。 , 「

PDO のストレージ プロセスの詳細な紹介」をお読みください。

以上がPDO でのトランザクション処理の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。