mysql事务多个表thinkphp_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;

}

*/

}

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值