#重新父类的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. Inno Setup入门(十二)——Pascal脚本(1)

    事件函数(1) Inno Setup支持以下函数和过程. function InitializeSetup(): Boolean; 该函数在安装程序初始化时调用,返回False 将中断安装,True则 ...

  2. Mysql的共享锁和排他锁(转载)

    mysql锁机制分为表级锁和行级锁,本文就和大家分享一下我对mysql中行级锁中的共享锁与排他锁进行分享交流. 共享锁又称为读锁,简称S锁,顾名思义,共享锁就是多个事务对于同一数据可以共享一把锁,都能 ...

  3. javascript设定指定元素的父结点的孙子节点的属性

    window.onload=function(){ var allerror_a = document.getElementsByClassName("popup_link"); ...

  4. python函数getopt用法

    python内建模块,用来处理命令行参数 格式:getopt(args, shortopts, longopts = []) 参数args一般是sys.argv[1:]sys.argv[0]表示执行文 ...

  5. CompileGLShader

    //-----------------------------------------------------------------------------// Purpose: Compiles ...

  6. [Python爬虫] 之二十一:Selenium +phantomjs 利用 pyquery抓取36氪网站数据

    一.介绍 本例子用Selenium +phantomjs爬取36氪网站(http://36kr.com/search/articles/电视?page=1)的资讯信息,输入给定关键字抓取资讯信息. 给 ...

  7. 最短路径——Floyd,Dijkstra(王道)

    题目描述: 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线 ...

  8. 马化腾从CFIDO到QQ(CFIDO BBS回忆录)

    微博上看到一个和马化腾貌似挺熟的人,聊起了和马化腾的交往,偶然间提到了这个CFIDO东西,搜索了一下,发现是远古的一个bbs.然后还看到一篇以网友的视角写的当时的一些回忆.我觉得挺好玩的,然后看到文章 ...

  9. WifiStateMachine学习笔记

    WifiStateMachine 1. 初始化 传入接口名称wlanInterface 新建一个WiFi类型的NetworkInfo 发一个ssid为null的广播 电池 NetworkManagem ...

  10. 【DB2】经典SQL写法

    1.环境准备 CREATE TABLE DataInfo( ID_1 ), ID_2 ) ) INSERT INTO DataInfo VALUES('A','Oracle'); INSERT INT ...