• 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;
    				  }
    				*/
        	 		}
        	 	}
        	 }
        }
    

      

  • 相关阅读:
    阶段性总结---初始阶段
    微信授权以及微信支付所遇到的坑(完善)
    CSS3学习
    Playing with String(codeforces 305E)
    Treblecross(uva 10561)
    序列操作(bzoj 1858)
    传送带(bzoj 1857)
    字符串(bzoj 1856)
    刷题比赛(洛谷 1707)
    大楼(bzoj 2165)
  • 原文地址:https://www.cnblogs.com/hgj123/p/4157503.html
Copyright © 2020-2023  润新知