您的位置:首页 > 编程语言 > PHP开发

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;
}
*/
}
}
}
}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐