您好,登錄后才能下訂單哦!
這篇文章主要介紹了php用事務的案例,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
在某些程序在執行的時候需要進行多個動作,而我們的業務要求是某個動作在執行錯誤的時候該進程所有的動作都不再執行,全部執行成功才算成功,否則就回到執行之前的狀態,這就需要用到事務的處理。
原生代碼如下:
<?php $link = mysqli_connect('localhost','username','password'); //創建鏈接 if(!$link) exit('數據庫連接失敗'); //判斷是否鏈接成功 mysqli_set_charset($link , 'utf8'); //設置字符集 mysqli_select_db($link,'myDatabase'); //選擇數據庫 $sql1 = "正確的插入語句"; //準備sql語句 $sql2 = "錯誤的插入語句"; $result1 = mysqli_query($link , $sql1); //發送sql語句 $result2 = mysqli_query($link , $sql2); if($result1 && $result2) { mysql_query(“COMMIT”); //提交事務 echo "提交成功"; } else { mysql_query("ROLLBACK"); echo '數據回滾'; } mysql_query("END"); //事務結束
PDO 代碼如下:
try { //實例化PDO對象 $pdo = new PDO("mysql:host=localhost;dbname=test","root","root",array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION)); $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); //開啟事務 $pdo->beginTransaction(); //執行sql語句 $pdo->exec("insert into t1(username,password,rtime,rip) values('shiwu2','shiwu2','456456456','456456456')"); $pdo->exec("insert into t2(username,password,rtime,rip) values('shiwu2',shiwu2','456456456','456456456')"); //提交事務 $pdo->commit(); //PDO PDOStatement PDOException } catch(PDOException $e) { //回滾事務 $pdo->rollBack(); echo "數據回滾"; }
TP5 框架中使用事務
//模型方法 function demo{ //開啟事務 $this->startTrans(); //業務邏輯操作 $data['id'] = 1; $res = $this->insertUserInfo($data); //保存用戶信息 if($res) { //提交事務 $this->commit(); return $res; } else { //事務回滾 $this->rollback(); } }
感謝你能夠認真閱讀完這篇文章,希望小編分享php用事務的案例內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。