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;
}
*/
}
}
}
}
ThinkPHP 处理商品添加的时候操作多张表 用事务解决。的更多相关文章
- (10)MySQL触发器(同时操作两张表)
什么是触发器 触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合.触发器的这种特性可以协助应用在数据库端确保数据的完整性. 举个例子,比如你现在有两个表[用户表]和[日志 ...
- JDBC操作多张表一
一.操作一对多情况开发步骤1创建对象 //代码部门的对象public class Department { private String id; private String name; privat ...
- update操作多张表
sql 语句多张表UPDATE用法一.当用一个表中的数据来更新另一个表中的数据,T-SQL提供多种写法(下面列出了二种),但建议用第一种写法,虽然传统,但结构清晰.飞.飞Asp技术乐园并且要注意,当用 ...
- 给mysql数据添加一个只拥有一张表的权限
grant all privileges on [database].* to 'database'@'localhost' identified by 'password' 例如: grant al ...
- 怎样加快master数据库的写操作?分表原则!将表水平划分!或者添加写数据库的集群
1.怎样加快master数据库的写操作?分表原则!将表水平划分!减少表的锁定时间!!! 或者或者添加写数据库的集群!!!或者添加写数据库的集群!!! 2.既然分表了,就一定要注意分表的规则!要在代码层 ...
- PHP.TP框架下商品项目的优化4-优化商品添加表单js
优化商品添加表单js 思路 1.制作五个按钮 2.下面五个table 3.全部隐藏,点击则显示 4.点击第几个按钮就显示第几个table 具体操作 1.添加按钮 2.添加五个table并添加class ...
- legend---十、thinkphp中如何进行原生sql操作
legend---十.thinkphp中如何进行原生sql操作 一.总结 一句话总结:query方法和execute方法 Db类支持原生SQL查询操作,主要包括下面两个方法: query方法 quer ...
- vue登录功能和将商品添加至购物车实现
2.1: 学子商城--用户登录 用户登录商城用户操作行为,操作用户输入用户名和密码 点击登录按钮,一种情况登录成功 一种情况登录失败 "用户名或密码有误请检查" 2.2:如何实现 ...
- ***Redis hash是一个string类型的field和value的映射表.它的添加、删除操作都是O(1)(平均)。hash特别适合用于存储对象
http://redis.readthedocs.org/en/latest/hash/hset.html HSET HSET key field value (存一个对象的时候key存) 将哈希 ...
随机推荐
- JavaScript 中函数节流和函数去抖的讲解
JavaScript 中函数节流和函数去抖的讲解 我们都知道频繁触发执行一段js逻辑代码对性能会有很大的影响,尤其是在做一些效果实现方面,或者逻辑中需要进行后端请求,更是会导致卡顿,效果失效等结果,所 ...
- 请用心练完这16个webpack小例子
16个demo,webpack+react搭配使用首先教大家2个新技能 1.按照正常github地址情况下,你的github本身不能访问目录. 例如要访问vue-demo下的vueCpu文件夹:htt ...
- Error: Top-level design entity "demo" is undefined
原因:顶层模块的module名没有和工程名同名 解决方法:把顶层模块 module名改成和工程名同名 最近在玩QUARTUS 11遇到此问题! 问题补充:本人用的时VERILOG HDL硬件描述语言! ...
- 使用Spring Boot上传文件
原文:http://www.cnblogs.com/ityouknow/p/8298344.html 上传文件是互联网中常常应用的场景之一,最典型的情况就是上传头像等,今天就带着带着大家做一个Spri ...
- 【sql】mysql数据库做两条数据替换的操作,不使用第三方变量
需求: 1.将数据库中两条数据中的唯一约束列 做值的替换 原始思想: 将两条数据查出来,在程序中设置第三方变量,进行两条数据的替换,然后将原始两条数据删除,将新的两条替换后的数据插入. 新思想: 1 ...
- 【jQuery】:not选择器的说明和:checked选择器的使用
1.:not选择器的说明使用 先给出一下例子: $(".form1 :not(input[name='category'])") 这个 能实现 获取到from1表单中除了input ...
- Android2017进阶知识点、面试题及答案(精选版)
前言 没啥好说的,撸起袖子就是干吧! 1 2 JAVA 相关 1.静态内部类.内部类.匿名内部类,为什么内部类会持有外部类的引用?持有的引用是this?还是其它? 静态内部类:使用static修饰的内 ...
- wordcount代码实现详解
阅读目录 1.MapReduce整体流程 2.WordCount源码 3.WordCount逐行解析 Hadoop的框架最核心的设计就是:HDFS和MapReduce.HDFS为海量的数据提供了存储, ...
- [转载]centos 6.4中git如何正常显示中文
FROM: http://ju.outofmemory.cn/entry/63250 系统版本:centos 6.4 git版本:1.7.1,使用yum直接安装的. 当使用git status查看时, ...
- Docker解析及轻量级PaaS平台演练(三)--Dockerfile编写
在本篇中将介绍Dockerfile的编写 除了通过修改Image,创建Container,在打包成Image来创建我们需要的Image之外 我们还可以编写Dockerfile文件,通过build来创建 ...