类别:PHP问题 / 日期:2019-12-02 / 浏览:91 / 评论:0

在某些顺序在实行的时刻须要举行多个行动,而我们的营业要求是某个行动在实行毛病的时刻该历程一切的行动都不再实行,悉数实行胜利才算胜利,不然就回到实行之前的状况,这就须要用到事件的处置惩罚。 (引荐进修: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什么时刻用事件的细致内容,更多请关注ki4网别的相干文章!

打赏

感谢您的赞助~

打开支付宝扫一扫,即可进行扫码打赏哦~

版权声明 : 本文未使用任何知识共享协议授权,您可以任何形式自由转载或使用。

 可能感兴趣的文章

评论区

发表评论 / 取消回复

必填

选填

选填

◎欢迎讨论,请在这里发表您的看法及观点。