首頁 >後端開發 >php教程 >PDO中的事務處理具體介紹

PDO中的事務處理具體介紹

黄舟
黄舟原創
2017-04-28 17:47:112427瀏覽

PDO中的事務處理具體介紹

交易(transaction)是由查詢和/或更新語句的序列組成。 用 begin、start transaction開始一個事務,rollback 回滾事務,commit 提交事務。 在開始一個事務後,可以有若干個 SQL 查詢或更新語句,個 SQL遞交執行後,還應該有判斷是否正確執行的語句,以確定下一步是否回滾,若都被正確執行則最後提交事務。一旦交易回滾,資料庫則保持開始交易前狀態。就好像一個被編輯的文件不存檔退出,自還是保持文件原來的樣子。所以,事務可視為原子操作,事務中的 SQL,要嘛全部執行,要不一句都不執行。

在前兩篇文章《PDO中錯誤處理的方法一-errorCode()方法》,《PDO中錯誤處理的方法二-errorInfo()方法》我們介紹了PDO中處理錯誤的方法,那麼我們來具體介紹一下PDO中的事務處理~

#在PDO 中同樣可以實現事務處理的功能,其應用的方法如下:

(1) 開啟事務-beginTransaction()方法。

beginTransaction()方法將關閉自動提交(autocommit)模式,直到交易提交或回滾以後才恢復。

(2)提交交易-commit()方法

commit()方法完成交易的提交操作,成功回傳true,否則傳回false。

(3)事務回滾-rollBack()方法

rollBack()方法執行交易的回溯操作。

透過prepare()和execute()方法在資料庫中新增數據,並且透過事務處理機制確保資料能夠正確的新增到資料庫中,具體步驟如下:

建立一個php文件,先定義資料庫連線參數,建立try{...}catch{...}語句,在try{}語句中實例化PDO建構函數,完成與資料庫的連接,並且透過beginTransaction()方法開啟事務,然後定義INSERT 新增語句,透過$_POST[]方法取得表單中提交的數據,透過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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn