您当前的位置: 首页 > 网站编程 > PHP教程 > PHP中执行MYSQL事务解决数据写入不完整等情况

PHP中执行MYSQL事务解决数据写入不完整等情况

作者:不详 来源:网络 发布时间: 2014-08-10 21:50 点击:
事务可以进行模拟SQL操作,当所有的SQL都操作成功的时候才进行SQL操作,只要有一个操作失败就回滚当前事务的所有SQL操作,避免出现上面描述中出现的数据写入不完整等情况 近来稍有时间研究了下MYSQL中的事务操作,在很多场合下很是适用,譬如在注册的时候需要初始化很

PHP中执行MYSQL事务解决数据写入不完整等情况

  事务可以进行模拟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中执行MYSQL事务解决数据写入不完整等情况"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4