php什麼時候用事務

(*-*)浩
發布: 2023-02-27 18:56:02
原創
3097 人瀏覽過

php什麼時候用事務

在某些程式在執行的時候需要進行多個動作,而我們的業務要求是某個動作在執行錯誤的時候該進程所有的動作都不再執行,全部執行成功才算成功,否則就回到執行前的狀態,這就需要用到事務的處理。   (建議學習:PHP影片教學

原生程式碼如下:

<?php
	$link = mysqli_connect(&#39;localhost&#39;,&#39;username&#39;,&#39;password&#39;);					//创建链接

	if(!$link) exit(&#39;数据库连接失败&#39;);											//判断是否链接成功

	mysqli_set_charset($link , &#39;utf8&#39;);											//设置字符集
	
	mysqli_select_db($link,&#39;myDatabase&#39;);										//选择数据库

	$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 &#39;数据回滚&#39;;
	}

	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(&#39;shiwu2&#39;,&#39;shiwu2&#39;,&#39;456456456&#39;,&#39;456456456&#39;)");
     $pdo->exec("insert into t2(username,password,rtime,rip) values(&#39;shiwu2&#39;,shiwu2&#39;,&#39;456456456&#39;,&#39;456456456&#39;)");
     
     //提交事务
     $pdo->commit();
     //PDO   PDOStatement  PDOException
} catch(PDOException $e) {
	 //回滚事务
     $pdo->rollBack();
	 echo "数据回滚";    
}
登入後複製

TP5 框架中使用事務

//模型方法
function demo{
	//开启事务
	$this->startTrans();
	
	//业务逻辑操作
	$data[&#39;id&#39;] = 1;
	$res = $this->insertUserInfo($data);		//保存用户信息
	
	if($res) {
		//提交事务
		$this->commit();
		return $res;
	} else {
		//事务回滚
		$this->rollback();
	}
}
登入後複製

以上是php什麼時候用事務的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板