手机
当前位置:查字典教程网 >编程开发 >php教程 >PHP中执行MYSQL事务解决数据写入不完整等情况
PHP中执行MYSQL事务解决数据写入不完整等情况
摘要:近来稍有时间研究了下MYSQL中的事务操作,在很多场合下很是适用,譬如在注册的时候需要初始化很多张关联表的时候,问答回复的时候需要至少同时操...

近来稍有时间研究了下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事务解决数据写入不完整等情况】相关文章:

PHP4 与 MySQL 数据库操作函数详解

桌面中心(二)数据库写入

用PHP将数据导入到Foxmail

PHP中生成UUID自定义函数分享

用PHP和MYSQL建立计数器过程详解

PHP中把对象转换为关联数组代码分享

php中header跳转使用include包含解决参数丢失问题

一个用于mysql的数据库抽象层函数库

提升PHP执行速度全攻略(下)

经典PHP加密解密函数Authcode()修复版代码

精品推荐
分类导航