ThinkPHP 处理商品添加的时候操作多张表 用事务解决。
2014-12-11 14:17
459 查看
#重新父类的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; } */ } } } }
相关文章推荐
- eclipse中配置server中选择tomcat8无法进行下一步处理 在创建server的时候,选择tomcat8后,server name为空,并且无法手动输入,同时无法进行下一步操作。 解决方
- SQLite并发操作下的分析与处理,解决database is locked,以及多线程下执行事务等问题
- thinkphp事务处理无效时的解决办法,一击命中!
- Android多线程操作sqlite(Sqlite解决database locked问题)(2)使用事务处理的效果
- thinkPHP5.0框架事务处理操作简单示例
- 使用事务处理解决系统并发性操作
- ThinkPHP3.1.2中DbOracle.class.php不能实现事务处理的解决方法
- 附加SQL2000数据库的时候出现:该LSN是传递给数据库shikong_Lekd中的日志扫描操作解决方法(转)
- "服务器没有设置事务处理"错误的解决方法
- 在你用JSP-servlet编写程序时候可以用以下简单的乱码处理解决!!
- oracle分布式处理时报“ORA-02041: 客户数据库未开始一个事务处理”解决办法 - z
- 操作NHibernate进行多事务并发处理的一些小经验
- maven添加struts2-core 2.0.8依赖的时候,报错的解决办法
- 高级复制添加主体站点的时候碰到ORA-23375错误的解决方法
- 安装sqlserver2000的时候安装过某个文件创建挂起的文件操作?处理时最简单的方法
- 安装SQL Server 2000的时候出现“以前的某个程序安装已在安装计算机上创建挂起的文件操作。运行安装程序之前必须重新启动计算机”的解决方法
- VB+ADO检测数据库并发操作和处理并解决并发冲突
- 关于c#.Net操作Access数据库的类,支持事务处理
- VB+ADO检测数据库并发操作和处理并解决并发冲突
- 关于c#.Net操作Access数据库的类,支持事务处理