Maison >développement back-end >Problème PHP >Quand utiliser les transactions php
Certains programmes doivent effectuer plusieurs actions lors de leur 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 plus exécutées. Elle est considérée comme réussie. seulement 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.
Natif :
<?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"); //事务结束
AOP :
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 "数据回滚"; }
Cadre TP5 :
//模型方法 function demo{ //开启事务 $this->startTrans(); //业务逻辑操作 $data['id'] = 1; $res = $this->insertUserInfo($data); //保存用户信息 if($res) { //提交事务 $this->commit(); return $res; } else { //事务回滚 $this->rollback(); } }
Le contenu ci-dessus est à titre de référence uniquement !
Tutoriel recommandé : Tutoriel vidéo PHP
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!