PHP中执行MYSQL事务解决数据写入不完整等情况
发布:smiling 来源: PHP粉丝网 添加日期:2020-08-25 18:44:43 浏览: 评论:0
事务可以进行模拟SQL操作,当所有的SQL都操作成功的时候才进行SQL操作,只要有一个操作失败就回滚当前事务的所有SQL操作,避免出现上面描述中出现的数据写入不完整等情况。
近来稍有时间研究了下MYSQL中的事务操作,在很多场合下很是适用,譬如在注册的时候需要初始化很多张关联表的时候,问答回复的时候需要至少同时操作两张表,这些都会在某些时候只能成功更新一张表,而另外的SQL语句出现错误,正常的操作会导致初始化了一张表 ,其他的都木有能初始化,这个时候就会导致用户表里的用户信息已经执行插入,导致提示注册失败,但是用户已经注册了部分信息,这个时候需要程序员去数据库删除相应的数据是一个比较不好的事情。
因此这边考虑使用事务,事务可以进行模拟SQL操作,当所有的SQL都操作成功的时候才进行SQL操作,只要有一个操作失败就回滚当前事务的所有SQL操作,避免出现上面描述中出现的数据写入不完整等情况。
下面是鄙人写的一小段代码,欢迎大家参考和提出意见:
- /**
- * @todo 多条sql的事务处理
- * @param $sqls array
- * @return boole true/false
- */
- public function doArraySqlActionsTran($password,$sqls){
- $db = $this -> doSqlLink($password);//打开数据库链接
- $db -> autocommit(FALSE);//设置为不自动提交,因为MYSQL默认立即执行
- //获取SQL执行结果数组
- for ($i=0;$i<count($sqls);$i++){
- $result[$i] = $db -> query($sqls[$i]);
- }
- //解析SQL执行结果数组
- for ($j=0;$j<count($result);$j++){
- if ($result[$j]==FALSE){
- $result[$j]='false';
- }else{
- $result[$j]='true';
- }
- }
- //查找SQL结果数组中是否存在false结果集
- if (in_array('false',$result)){
- $sqlResult=FALSE;
- }else{
- $sqlResult==TRUE;
- }
- //根据结果集进行数据库回滚或者执行操作
- if ($sqlResult==FALSE){
- $db -> rollback();//判断当执行失败时回滚
- $return=FALSE;// 正式环境中使用
- //$return='ROOLBACK';//test 标记使用
- }else{
- $db -> commit();//执行事务s
- $return=TRUE;// 正式环境中使用
- //$return='COMMIT';//test 标记使用
- } //phpfensi.com
- $db->autocommit(true); //设置为非自动提交——事务处理
- $db->close();//关闭连接
- return $return;
- }
到此事务执行批量SQL操作基本完成,谢谢大家!
Tags: MYSQL事务
相关文章
- ·PHP mysql事务回滚操作实例(2014-09-10)
- ·php下pdo的mysql事务处理应用实例(2014-09-10)
- ·php实现mysql事务处理的方法(2021-05-04)
- ·php下pdo的mysql事务处理用法实例(2021-05-04)

推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)