#重新父类的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;
}
*/
}
}
}
}

  

ThinkPHP 处理商品添加的时候操作多张表 用事务解决。的更多相关文章

  1. (10)MySQL触发器(同时操作两张表)

    什么是触发器 触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合.触发器的这种特性可以协助应用在数据库端确保数据的完整性. 举个例子,比如你现在有两个表[用户表]和[日志 ...

  2. JDBC操作多张表一

    一.操作一对多情况开发步骤1创建对象 //代码部门的对象public class Department { private String id; private String name; privat ...

  3. update操作多张表

    sql 语句多张表UPDATE用法一.当用一个表中的数据来更新另一个表中的数据,T-SQL提供多种写法(下面列出了二种),但建议用第一种写法,虽然传统,但结构清晰.飞.飞Asp技术乐园并且要注意,当用 ...

  4. 给mysql数据添加一个只拥有一张表的权限

    grant all privileges on [database].* to 'database'@'localhost' identified by 'password' 例如: grant al ...

  5. 怎样加快master数据库的写操作?分表原则!将表水平划分!或者添加写数据库的集群

    1.怎样加快master数据库的写操作?分表原则!将表水平划分!减少表的锁定时间!!! 或者或者添加写数据库的集群!!!或者添加写数据库的集群!!! 2.既然分表了,就一定要注意分表的规则!要在代码层 ...

  6. PHP.TP框架下商品项目的优化4-优化商品添加表单js

    优化商品添加表单js 思路 1.制作五个按钮 2.下面五个table 3.全部隐藏,点击则显示 4.点击第几个按钮就显示第几个table 具体操作 1.添加按钮 2.添加五个table并添加class ...

  7. legend---十、thinkphp中如何进行原生sql操作

    legend---十.thinkphp中如何进行原生sql操作 一.总结 一句话总结:query方法和execute方法 Db类支持原生SQL查询操作,主要包括下面两个方法: query方法 quer ...

  8. vue登录功能和将商品添加至购物车实现

     2.1: 学子商城--用户登录 用户登录商城用户操作行为,操作用户输入用户名和密码 点击登录按钮,一种情况登录成功 一种情况登录失败 "用户名或密码有误请检查" 2.2:如何实现 ...

  9. ***Redis hash是一个string类型的field和value的映射表.它的添加、删除操作都是O(1)(平均)。hash特别适合用于存储对象

    http://redis.readthedocs.org/en/latest/hash/hset.html HSET HSET key field value   (存一个对象的时候key存) 将哈希 ...

随机推荐

  1. ethtool 命令输出的注意点--网卡参数

    http://blog.csdn.net/msdnchina/article/details/70339689

  2. Instant Run 的操作影响到了代码,导致Android App启动闪退的问题

    转自yuhc163原文android启动应用java.lang.NoClassDefFoundError: Class not found using the boot class loader; n ...

  3. vscode 使用笔记

    https://code.visualstudio.com/docs/setup/setup-overview#_proxy-server-support 如果使用代理上网时,需要配置:   在 se ...

  4. SqlServer 执行计划及Sql查询优化初探

    网上的SQL优化的文章实在是很多,说实在的,我也曾经到处找这样的文章,什么不要使用IN了,什么OR了,什么AND了,很多很多,还有很多人拿出仅几S甚至几MS的时间差的例子来证明着什么(有点可笑),让许 ...

  5. Java平时需要注意的事项

    1.String 相等 稍微有点经验的程序员都会用equals比较而不是用 ==,但用equals就真的安全了吗,看下面的代码 user.getName().equals("xiaoming ...

  6. Scala快学笔记(一)

    一,基本概念: 1,Scala是一种基于JVM的面向对象和函数式编程语言 2,基本类型:数值类型 ->:Byte,Short,Int,Long,Float,Double和布尔类型:Boolean ...

  7. websocket 和 socket.io 之间的区别

    socket.io封装了websocket,同时包含了其它的连接方式,比如Ajax.原因在于不是所有的浏览器都支持websocket,通过socket.io的封装,你不用关心里面用了什么连接方式.你在 ...

  8. grep怎样匹配tab键

    grep怎样匹配tab键 学习了:https://blog.csdn.net/qixinkui/article/details/2746433 1 grep -P '/t'; 2 awk '//t/' ...

  9. 深入解析淘宝Diamond之客户端架构

    转载:http://blog.csdn.net/u013970991/article/details/52088350 一.什么是Diamond diamond是淘宝内部使用的一个管理持久配置的系统, ...

  10. 依据错误原理解决Hibernate执行出现No CurrentSessionContext configured!错误

    (1)异常信息例如以下: 严重: Servlet.service() for servlet action threw exception java.lang.RuntimeException: &l ...