일부 프로그램은 실행 시 여러 작업을 수행해야 하며, 우리의 비즈니스 요구 사항은 작업 실행에 실패하면 프로세스의 모든 작업이 더 이상 실행되지 않는다는 것입니다. 모든 작업이 성공적으로 실행되는 경우에만 성공으로 간주됩니다. 그렇지 않으면 트랜잭션 처리가 필요한 실행 전 상태로 돌아갑니다. (추천 학습: 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는 언제 트랜잭션을 사용합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!