这篇文章主要介绍了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用事务的案例内容对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,遇到问题就找亿速云,详细的解决方法等着你来学习!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。