搜索
系统检测到您的用户名不符合规范:

Thinkphp 事务不起效

浏览:3206 发布日期:2016年10月13日 分类:求助交流 关键字: mysql 事物 commit rollback
PHP代码public function StrategyAddAction()
{
//$trans=M();
//$trans->startTrans();
$strdata=$_POST["data"];
$strategy_Adpter=M("TStrategyMain");
$strategy_Adpter->startTrans();
$strategy_Adpter->create();
$strategydetail_Adpter=M("TStrategyDetail");

$strategy_Adpter->name=$strdata["srcsn"];
$strategy_Adpter->eqsn=$strdata["srcsn"];
$strategy_Adpter->smartmac=$strdata["srcsn"];
$strategy_Adpter->eventcode=$strdata["srceventid"];
$lastmainid=$strategy_Adpter->add();

//$strategy_Adpter->rollback();
$lastdetailid=true;

if($lastmainid!=false){
foreach ($strdata["destlist"] as $eq) {
if($lastdetailid==false){
break;
}

foreach ($eq["eventArray"] as $event) {
$strategydetail_Adpter->create();
$strategydetail_Adpter->mainid=22222;//$lastmainid;外键插入失败
$strategydetail_Adpter->eqsn=$eq["sn"];
$strategydetail_Adpter->smartmac=$eq["mac"];
$strategydetail_Adpter->eventcode=$event["id"];
$lastdetailid=$strategydetail_Adpter->add();
if($lastdetailid==false){
break;
}
}
}
}

if (($lastdetailid&&$lastmainid)!=false){
$strategy_Adpter->commit();
$resultArr=array("state"=>true,"message"=>"ok");
}else{
$strategy_Adpter->rollback();
$resultArr=array("state"=>false,"message"=>"failure");
}
}
数据库CREATE TABLE `t_strategy_main` (

) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8
回头来搞这个项目。
每次主表保存完,数据库里就有数据了,之后的Detail 保存失败回滚不起效。
TP版本是3.2.3 php 5.6.23 mysql Ver 14.14 Distrib 5.7.13
最佳答案
评论() 相关
后面还有条评论,
评论支持使用[code][/code]标签添加代码
您需要登录后才可以评论 登录 | 立即注册
收藏
inesadt
积分:25 等级:LV0
热点推荐
(追記) (追記ここまで)
最新更新

我们

合作

网站

信息

ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

AltStyle によって変換されたページ (->オリジナル) /