thinkphp5事务的处理,事务中涉及到循环的处理方案-原创。

发布于 2021-04-17 18:34:08
function ac(){    
$obj=new \app\admin888\model\ProductsModel;    
$b=1;//标志成功的状态,一般失败,就修改其为0    
                for($j=0;$j<=10;$j++){    
                    for($i=0;$i<=5;$i++){    
                        $obj->db->query("insert into cbd_products_attr_guige set uid=5");    
                        if($i==4){//一旦与遇错    
                            //Db::rollback();//可以省略,在try那里一起操作    
                            $b=0;//设置出错标志    
                            break;//终止本次循环,不可少。    
                        }    
                    }    
                    if(!$b){//外层循环中判断里面有错误,则外层也终止。数据库回滚。    
                        //Db::rollback();在try那里一起操作    
                        break;//终止本次循环,不可少。    
                    }    
                }    
                //echo 1;    
                return $b;    
    }    
    function trya(){    
        // 启动事务    
            Db::startTrans();    
            try{    
                $b=$this->ac();    
                if($b){    
                    Db::commit();    
                    return 1;    
                }else{    
                    Db::rollback();    
                    return 0;    
                }    
            } catch (\Exception $e) {    
                //echo 0;    
                // 回滚事务			    
                Db::rollback();			    
                return 2;				    
            }    
    }    
    //测试    
    function cs(){    
        echo $this->trya();    
    }



关注公众号,了解更多it技术(it问答网

0 条评论

发布
问题