PHP中执行MYSQL事务解决数据写入不完整等情况
2015-01-24信息快讯网
事务可以进行模拟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 标记使用 } $db->autocommit(true); //设置为非自动提交――事务处理 $db->close();//关闭连接 return $return; }
到此事务执行批量SQL操作基本完成,谢谢大家!
PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
Thinkphp使用mongodb数据库实现多条件查询方法
ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法
Thinkphp实现MySQL读写分离操作示例
PHP获取MySql新增记录ID值的3种方法
ThinkPHP结合ajax、Mysql实现的客户端通信功能代码示例
ThinkPHP实现事务回滚示例代码
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
destoon会员注册提示“数据校验失败(2)”解决方法
destoon二次开发常用数据库操作
ThinkPHP3.1数据CURD操作快速入门
CI框架在CLI下执行占用内存过大问题的解决方法
linux使用crontab实现PHP执行计划定时任务
win7计划任务定时执行PHP脚本设置图解
Windows中使用计划任务自动执行PHP程序实例
PHP中HTML标签过滤技巧
PHP中实现生成静态文件的方法缓解服务器压力
有关于PHP中常见数据类型的汇总分享
php curl模拟post提交数据示例
codeigniter使用技巧批量插入数据实例方法分享
php实现执行某一操作时弹出确认、取消对话框
php上传图片到指定位置路径保存到数据库的具体实现
PHP连接SQLServer2005方法及代码
输入值/表单提交参数过滤有效防止sql注入的方法
linux实现php定时执行cron任务详解
phpexcel导入excel数据使用方法实例
php防止sql注入代码实例
使用PHP备份MySQL和网站发送到邮箱实例代码
php防止SQL注入详解及防范
PHP迭代器的内部执行过程详解
PHP设置一边执行一边输出结果的代码
显示程序执行时间php函数代码
PHP mysql与mysqli事务使用说明 分享
解析php mysql 事务处理回滚操作(附实例)
thinkphp 多表 事务详解