• ThinkPHP 处理商品添加的时候操作多张表 用事务解决。


     #重新父类的add方法
        public function add(){
        	#同时操作多装表,可以考虑用事务来做,要同时插入数据成功要么都不插输入数据。
        	#开启事务的前提是表的引擎必须是InnoDB
        	
        	 #开启事务
        	 //mysql_query("STRAT TRANSACTION");
        	
             #--------------(1)插入商品的基本信息------------
        	 #判断是否插件成功
        	 if(($goods_id=parent::add())===FALSE){
        	 	return FALSE;
        	 }
        	 #--------------(2)插入会员价格------------
        	 #判断是否有POST数据提交过来
        	 if(isset($_POST['Ml'])){
        	 	#实例化会员价格模型
        	 	$Mb_Price=M('MemberPrice');
        	 	#循环post提交过来的数据
        	 	foreach ($_POST['Ml'] as $k=>$v){
        	 	    #插入数据
        	 	    $is_ok=$Mb_Price->data(array(
                        'goods_id'=>$goods_id,
    	    				'level_id'=>$k,
    					'price'=>$v,
    				))->add();
    				
    			    /*
    				if($is_ok===FALSE){
    					mysql_query("ROLLBACK");
    					return FALSE;
    				}
    				*/
        	 	}
        	 	
        	 }
        	 #--------------(3)插入商品属性-----------
        	 #判断POST提交过来是否有数据
        	 if(isset($_POST['GoodsAttr'])){
        	 	#创建一个属性模型
        	 	$good_attr=M('GoodsAttr');
        	 	#循环读取post提交过来的数据
        	 	foreach($_POST['GoodsAttr'] as $k=>$v){
        	 		#在判断属性提交过来的是否是一个数组    如:颜色  有 白色  黑色  金黄 ....
        	 		if(is_array($v)){
        	 			#在循环这个属性的数组
        	 			foreach ($v as $k1=>$v1){
        	 			  #在循环插件数据、
        	 			  $is_ok=$good_attr->data(array(
                                'goods_id'=>$goods_id,
    							'attr_id'=>$k,
    							'attr_value'=>$v1,
        	 			  ))->add();
    	    	 		  /*
    					   if($is_ok===FALSE){
    						  mysql_query("ROLLBACK");
    						  return FALSE;
    					   }
    					  */
        	 			}
        	 		}else{
        	 		  #说明是单个值
        	 		  $is_ok=$good_attr->data(array(
                         'goods_id'=>$goods_id,
    					 'attr_id'=>$k,
    					 'attr_value'=>$v,
        	 		 ))->add();
        	 	    /*
    				  if($is_ok===FALSE){
    					  mysql_query("ROLLBACK");
    					  return FALSE;
    				  }
    				*/
        	 		}
        	 	}
        	 }
        }
    

      

  • 相关阅读:
    分布式事务之最终一致性BASE理论
    CAP理论
    Comparator中返回0导致数据丢失的大坑
    电脑主板分类
    SimpleDateFormat线程不安全
    Redis面试题
    JS闭包
    ES6将两个数组合并成一个对象数组
    视频色彩空间RGB、YUV、YCbCr
    c#接口作用的深入理解
  • 原文地址:https://www.cnblogs.com/hgj123/p/4157503.html
Copyright © 2020-2023  润新知