很多站长朋友们都不太清楚php事务重复写入,今天小编就来给大家整理php事务重复写入,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 新手请教PHP如何重复写入数组? 2、 PHP调用事务多次操作数据库时,应该怎么办 3、 PHP中执行MYSQL事务解决数据写入不完整等情况 新手请教PHP如何重复写入数组?发帖子的时候稍微认真一点嘛,你例子代码里面是新增加节点exp为100,而文字描述举例又说新增0,我下面的程序是新增加的100,我简化了获取$max的过程,当然用你的方法也是一样的,在我的while里面获取$max既可,希望对你有所帮助:
<?php
$str = '{"home":[{"id":2,"exp":45},{"id":3,"exp":0}]}';
$obj = json_decode($str);
//print_r($obj);
$num=2;
while($num--){
$newRow = new stdClass();
$newRow->id = $obj->home[count($obj->home)-1]->id + 1;
$newRow->exp = 100;
$obj->home[] = $newRow;
}
//print_r($obj);
$str=json_encode($obj);
echo $str;
?>
PHP调用事务多次操作数据库时,应该怎么办tp开启事务: M()->startTrans(); M()->commit();M()->rollback();#thinkphp3.2
PHP中执行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事务重复写入的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php事务重复写入 php表单重复提交的详细内容...