溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

php用事務(wù)的案例

發(fā)布時間:2020-10-22 15:26:12 來源:億速云 閱讀:161 作者:小新 欄目:編程語言

這篇文章主要介紹了php用事務(wù)的案例,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

在某些程序在執(zhí)行的時候需要進行多個動作,而我們的業(yè)務(wù)要求是某個動作在執(zhí)行錯誤的時候該進程所有的動作都不再執(zhí)行,全部執(zhí)行成功才算成功,否則就回到執(zhí)行之前的狀態(tài),這就需要用到事務(wù)的處理。  

原生代碼如下:

<?php
	$link = mysqli_connect('localhost','username','password');					//創(chuàng)建鏈接

	if(!$link) exit('數(shù)據(jù)庫連接失敗');											//判斷是否鏈接成功

	mysqli_set_charset($link , 'utf8');											//設(shè)置字符集
	
	mysqli_select_db($link,'myDatabase');										//選擇數(shù)據(jù)庫

	$sql1 = "正確的插入語句";													//準(zhǔn)備sql語句
	$sql2 = "錯誤的插入語句";													

	$result1 = mysqli_query($link , $sql1);										//發(fā)送sql語句
	$result2 = mysqli_query($link , $sql2);	

	if($result1 && $result2) {
		mysql_query(“COMMIT”);													//提交事務(wù)
		echo "提交成功";
	} else {
		mysql_query("ROLLBACK");
		echo '數(shù)據(jù)回滾';
	}

	mysql_query("END");															//事務(wù)結(jié)束

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);
	
	 //開啟事務(wù)
	 $pdo->beginTransaction();
	  
	 //執(zhí)行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')");
     
     //提交事務(wù)
     $pdo->commit();
     //PDO   PDOStatement  PDOException
} catch(PDOException $e) {
	 //回滾事務(wù)
     $pdo->rollBack();
	 echo "數(shù)據(jù)回滾";    
}

TP5 框架中使用事務(wù)

//模型方法
function demo{
	//開啟事務(wù)
	$this->startTrans();
	
	//業(yè)務(wù)邏輯操作
	$data['id'] = 1;
	$res = $this->insertUserInfo($data);		//保存用戶信息
	
	if($res) {
		//提交事務(wù)
		$this->commit();
		return $res;
	} else {
		//事務(wù)回滾
		$this->rollback();
	}
}

感謝你能夠認真閱讀完這篇文章,希望小編分享php用事務(wù)的案例內(nèi)容對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學(xué)習(xí)!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI