Maison >développement back-end >Problème PHP >Quand PHP utilise-t-il les transactions ?

Quand PHP utilise-t-il les transactions ?

(*-*)浩
(*-*)浩original
2019-10-26 11:39:083144parcourir

Quand PHP utilise-t-il les transactions ?

Certains programmes doivent effectuer plusieurs actions lors de l'exécution, et notre exigence commerciale est que lorsqu'une action est exécutée de manière incorrecte, toutes les actions du processus ne seront pas exécutées à nouveau. ne sera considéré comme réussi que si toutes les exécutions réussissent. Sinon, il reviendra à l'état d'avant l'exécution, ce qui nécessite un traitement de transaction. (Apprentissage recommandé : Tutoriel vidéo PHP)

Le code natif est le suivant :

<?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");															//事务结束

Le code PDO est le suivant suit :

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 "数据回滚";    
}

Utilisation des transactions dans le framework TP5

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn