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存) 将哈希 ...
随机推荐
- css活用,半星星的效果
1.首先下载要用到星星字体 http://www.w3cplus.com/w3cplusDemo/demos/webFontIcon.html 2.css .cleanfloat::after{dis ...
- easyui 只刷新当前页面的数据 datagrid reload 方法
$('#refreshbtn').click(function() { $("#t_auclot").datagrid("reload",serializeFo ...
- 测试网站页面网速的Python脚本
一.测试网站页面网速脚本 [root@salt ~]# cat check_url.py #!/usr/bin/python # coding: UTF-8 import StringIO,pycur ...
- How Tomcat Works 读书笔记 八 加载器 上
Java的类加载器 具体资料见 http://blog.csdn.net/dlf123321/article/details/39957175 http://blog.csdn.net/dlf1233 ...
- Idea闪退问题-内存不能给太大
Idea闪退问题-内存不能给太大 学习了:https://blog.csdn.net/qq_17776287/article/details/77529455 学习了:https://blog.csd ...
- <LeetCode OJ> 101. Symmetric Tree
101. Symmetric Tree My Submissions Question Total Accepted: 90196 Total Submissions: 273390 Difficul ...
- 深入浅出 消息队列 ActiveMQ (转)
启动成功就可以访问管理员界面:http://localhost:8161/admin,默认用户名和密码admin/admin.如果你想修改用户名和密码的话,在conf/jetty-realm.prop ...
- grid 布局 设置行列间距
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...
- grid 布局一 固定宽度+自适应宽度
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...
- sencha touch结合webservice读取jsonp数据详解
sencha touch读取jsonp数据主要依靠Ext.data.JsonP组件,在mvc的store文件中定义代码如下: Ext.define('eparkapp.store.ParksNearb ...