TP事务 提交成功后为空

博主分享TP事务相关内容,自己写的事务提交后显示成功,但数据库却无数据。经检查,发现是自己粗心未写提交事务,强调成功后提交事务即可解决问题。
 Db::startTrans();
        try{
            //添加订单信息
            $order_id = Db::name('order')->insertGetId(['uid'=>$uid,'user_name'=>$user_name,'user_mobile'=>$user_mobile,'item_name'=>$item_name,'state'=>$state]);

            foreach ($date as $k=>$v){
                $id=Db::name('orderinfo')->insertGetId(['order_id'=>$order_id,'uid'=>$uid,'goods_id'=>$v['goods_id'],'goods_num'=>$v['goods_num'],'create_time'=>time()]);
                $ids.=$id.',';
            }
            substr_replace($ids,0,-1);
            Db::name('order')->where('id',$order_id)->update(['ids'=>$ids]);
            Db::commit();// 提交事务
            return self::success($order_id);
        }catch (\Exception $e){
            Db::rollback();
            return json($e->getMessage());
        }

分享一个TP的事务  超级简单

 

Db::startTrans(); //打开事务
Db::commit();// 提交事务
Db::rollback();//回滚事务

 我写的事务提交后发现成功了  但是数据库没有数据  检查了一下发现自己粗心忘了写提交事务  成功后提交事务就可以了

这操作数据库的添加landns函数,我是不是可以使用,就不用在CLI中去管ID的重复问题? APPL_ERRCODE dmDnsServerRuleAdd(const CFG_DNSSERVER_RULE_T *ent) { APPL_ERRCODE ret = ERR_NO_ERROR; TPCONFIG_SET_INPUT st = {0}; INT64 maxScore = 0; unsigned id; char key[TPDATA_KEY_MAX_LEN] = {0}; char id_buf[16]; PFM_ENSURE_RET_VAL(ent, ERR_APPL_C_PARAM_INVALID); PFM_IF_FAIL_DONE(ret, tpConfig_setResourceInit(&st, TPCONFIG_INIT_ENTRY)); /* 分配/确定 id(与 IPS 范式一致) */ tpConfig_getMaxScore(TPZSET_DNSPROXY_DNSSERVER, &maxScore); id = (ent->id && ent->id[0] != '\0') ? (unsigned)atoi(ent->id) : (unsigned)maxScore + 1; /* id→key,score=id */ dmDnsServerRuleKeyGetById(id, key, sizeof(key)); PFM_IF_FAIL_DONE(ret, tpConfig_objAddKeyScoreForSet(&st, TPCONFIG_INIT_ENTRY, key, id)); /* 字段写入(确保 id 字段非) */ snprintf(id_buf, sizeof(id_buf), "%u", id); PFM_IF_FAIL_DONE(ret, tpConfig_objAddFieldStrForSet(&st, TPCONFIG_INIT_ENTRY, CFG_PROTO_DNSSERVER_F_ID, id_buf)); PFM_IF_FAIL_DONE(ret, tpConfig_objAddFieldStrForSet(&st, TPCONFIG_INIT_ENTRY, CFG_PROTO_DNSSERVER_F_NAME, ent->name)); PFM_IF_FAIL_DONE(ret, tpConfig_objAddFieldStrForSet(&st, TPCONFIG_INIT_ENTRY, CFG_PROTO_DNSSERVER_F_TYPE, ent->type)); PFM_IF_FAIL_DONE(ret, tpConfig_objAddFieldStrForSet(&st, TPCONFIG_INIT_ENTRY, CFG_PROTO_DNSSERVER_F_DOMAIN, ent->domain)); // PFM_IF_FAIL_DONE(ret, tpConfig_objAddFieldStrForSet(&st, TPCONFIG_INIT_ENTRY, CFG_PROTO_DNSSERVER_F_ALIASES, ent->aliases)); PFM_IF_FAIL_DONE(ret, tpConfig_objAddFieldStrForSet(&st, TPCONFIG_INIT_ENTRY, CFG_PROTO_DNSSERVER_F_STATUS, ent->status)); PFM_IF_FAIL_DONE(ret, tpConfig_objAddFieldStrForSet(&st, TPCONFIG_INIT_ENTRY, CFG_PROTO_DNSSERVER_F_LANS, ent->lan_networks)); // PFM_IF_FAIL_DONE(ret, tpConfig_objAddFieldStrForSet(&st, TPCONFIG_INIT_ENTRY, CFG_PROTO_DNSSERVER_F_DNSSERVER, ent->dns_server)); PFM_IF_FAIL_DONE(ret, tpConfig_objAddFieldNumU32ForSet(&st, TPCONFIG_INIT_ENTRY, CFG_PROTO_DNSSERVER_F_TTL, ent->ttl)); PFM_IF_FAIL_DONE(ret, tpConfig_objAddFieldStrForSet(&st, TPCONFIG_INIT_ENTRY, CFG_PROTO_DNSSERVER_F_CNAME, ent->cname)); PFM_IF_FAIL_DONE(ret, tpConfig_objAddFieldStrForSet(&st, TPCONFIG_INIT_ENTRY, CFG_PROTO_DNSSERVER_F_IPV4S, ent->ipv4_addrs)); PFM_IF_FAIL_DONE(ret, tpConfig_objAddFieldStrForSet(&st, TPCONFIG_INIT_ENTRY, CFG_PROTO_DNSSERVER_F_IPV6S, ent->ipv6_addrs)); if (ent->dns_server1[0]) { PFM_IF_FAIL_DONE(ret, tpConfig_objAddFieldStrForSet(&st, TPCONFIG_INIT_ENTRY, CFG_PROTO_DNSSERVER_F_DNSSERVER1, ent->dns_server1)); } if (ent->dns_server2[0]) { PFM_IF_FAIL_DONE(ret, tpConfig_objAddFieldStrForSet(&st, TPCONFIG_INIT_ENTRY, CFG_PROTO_DNSSERVER_F_DNSSERVER2, ent->dns_server2)); } PFM_IF_FAIL_DONE(ret, tpConfig_set(&st)); /* 解析并保存Alias映射 */ if (ent->aliases[0]) { char *dup = strdup(ent->aliases); char *save = NULL; char *tok = strtok_r(dup, ",", &save); uint32_t index = 0; while (tok && index < 7) { // 最多7个aliases while (*tok == ' ' || *tok == '\t') { tok++; } char *e = tok + strlen(tok); while (e > tok && (e[-1] == ' ' || e[-1] == '\t')) { e[-1] = '\0'; --e; } if (*tok) { dmDnsServerAliasMapAdd(id_buf, tok, index++); } tok = strtok_r(NULL, ",", &save); } free(dup); } /* 解析并保存LAN映射 */ if (ent->lan_networks[0]) { char *dup = strdup(ent->lan_networks); char *save = NULL; char *tok = strtok_r(dup, ",", &save); uint32_t index = 0; while (tok) { while (*tok == ' ' || *tok == '\t') { tok++; } char *e = tok + strlen(tok); while (e > tok && (e[-1] == ' ' || e[-1] == '\t')) { e[-1] = '\0'; --e; } if (*tok) { dmDnsServerLanMapAdd(id_buf, tok, index++); } tok = strtok_r(NULL, ",", &save); } free(dup); } // // tpConfig_addOperAndSubForSet(&st, TPCONFIG_OPER_ADD | TPCONFIG_OPER_PUB, CFG_DNSPROXYSHELL_M_NAME); // // tpConfig_addOperAndSubForSet(&st, TPCONFIG_OPER_ADD | TPCONFIG_OPER_PUB, "dnsProxyShell"); tpConfig_addOperAndSubForSet(&st, TPCONFIG_OPER_ADD | TPCONFIG_OPER_PUB, DNSPROXYSHELL_SUB_NAME); tpConfig_addZsetNameForSet(&st, TPZSET_DNSPROXY_DNSSERVER); PFM_IF_FAIL_DONE(ret, tpConfig_set(&st)); done: tpConfig_setResourceFree(&st); return (ret == PFM_ERR_C_OK) ? ERR_NO_ERROR : ret; } APPL_ERRCODE dmDnsServerRuleSet(const CFG_DNSSERVER_RULE_T *ent) { APPL_ERRCODE ret = ERR_NO_ERROR; TPCONFIG_SET_INPUT st = {0}; char key[TPDATA_KEY_MAX_LEN] = {0}; unsigned id; PFM_ENSURE_RET_VAL(ent, ERR_APPL_C_PARAM_INVALID); PFM_ENSURE_RET_VAL(ent->id && ent->id[0] != '\0', ERR_APPL_C_PARAM_INVALID); id = (unsigned)atoi(ent->id); dmDnsServerRuleKeyGetById(id, key, sizeof(key)); PFM_IF_FAIL_DONE(ret, tpConfig_setResourceInit(&st, TPCONFIG_INIT_ENTRY)); PFM_IF_FAIL_DONE(ret, tpConfig_objAddKeyScoreForSet(&st, TPCONFIG_INIT_ENTRY, key, id)); /* 全量/按需写字段,保持你原有风格 */ PFM_IF_FAIL_DONE(ret, tpConfig_objAddFieldStrForSet(&st, TPCONFIG_INIT_ENTRY, CFG_PROTO_DNSSERVER_F_ID, ent->id)); PFM_IF_FAIL_DONE(ret, tpConfig_objAddFieldStrForSet(&st, TPCONFIG_INIT_ENTRY, CFG_PROTO_DNSSERVER_F_NAME, ent->name)); PFM_IF_FAIL_DONE(ret, tpConfig_objAddFieldStrForSet(&st, TPCONFIG_INIT_ENTRY, CFG_PROTO_DNSSERVER_F_TYPE, ent->type)); PFM_IF_FAIL_DONE(ret, tpConfig_objAddFieldStrForSet(&st, TPCONFIG_INIT_ENTRY, CFG_PROTO_DNSSERVER_F_DOMAIN, ent->domain)); // PFM_IF_FAIL_DONE(ret, tpConfig_objAddFieldStrForSet(&st, TPCONFIG_INIT_ENTRY, CFG_PROTO_DNSSERVER_F_ALIASES, ent->aliases)); PFM_IF_FAIL_DONE(ret, tpConfig_objAddFieldStrForSet(&st, TPCONFIG_INIT_ENTRY, CFG_PROTO_DNSSERVER_F_STATUS, ent->status)); PFM_IF_FAIL_DONE(ret, tpConfig_objAddFieldStrForSet(&st, TPCONFIG_INIT_ENTRY, CFG_PROTO_DNSSERVER_F_LANS, ent->lan_networks)); // PFM_IF_FAIL_DONE(ret, tpConfig_objAddFieldStrForSet(&st, TPCONFIG_INIT_ENTRY, CFG_PROTO_DNSSERVER_F_DNSSERVER, ent->dns_server)); PFM_IF_FAIL_DONE(ret, tpConfig_objAddFieldNumU32ForSet(&st, TPCONFIG_INIT_ENTRY, CFG_PROTO_DNSSERVER_F_TTL, ent->ttl)); PFM_IF_FAIL_DONE(ret, tpConfig_objAddFieldStrForSet(&st, TPCONFIG_INIT_ENTRY, CFG_PROTO_DNSSERVER_F_CNAME, ent->cname)); PFM_IF_FAIL_DONE(ret, tpConfig_objAddFieldStrForSet(&st, TPCONFIG_INIT_ENTRY, CFG_PROTO_DNSSERVER_F_IPV4S, ent->ipv4_addrs)); PFM_IF_FAIL_DONE(ret, tpConfig_objAddFieldStrForSet(&st, TPCONFIG_INIT_ENTRY, CFG_PROTO_DNSSERVER_F_IPV6S, ent->ipv6_addrs)); if (ent->dns_server1) { PFM_IF_FAIL_DONE(ret, tpConfig_objAddFieldStrForSet(&st, TPCONFIG_INIT_ENTRY, CFG_PROTO_DNSSERVER_F_DNSSERVER1, ent->dns_server1)); } if (ent->dns_server2) { PFM_IF_FAIL_DONE(ret, tpConfig_objAddFieldStrForSet(&st, TPCONFIG_INIT_ENTRY, CFG_PROTO_DNSSERVER_F_DNSSERVER2, ent->dns_server2)); } PFM_IF_FAIL_DONE(ret, tpConfig_set(&st)); dmDnsServerAliasMapDelByRuleId(ent->id); dmDnsServerLanMapDelByRuleId(ent->id); /* 解析并保存Alias映射 */ if (ent->aliases[0]) { char *dup = strdup(ent->aliases); char *save = NULL; char *tok = strtok_r(dup, ",", &save); uint32_t index = 0; while (tok && index < 7) { // 最多7个aliases while (*tok == ' ' || *tok == '\t') { tok++; } char *e = tok + strlen(tok); while (e > tok && (e[-1] == ' ' || e[-1] == '\t')) { e[-1] = '\0'; --e; } if (*tok) { dmDnsServerAliasMapAdd(ent->id, tok, index++); } tok = strtok_r(NULL, ",", &save); } free(dup); } /* 解析并保存LAN映射 */ if (ent->lan_networks[0]) { char *dup = strdup(ent->lan_networks); char *save = NULL; char *tok = strtok_r(dup, ",", &save); uint32_t index = 0; while (tok) { while (*tok == ' ' || *tok == '\t') { tok++; } char *e = tok + strlen(tok); while (e > tok && (e[-1] == ' ' || e[-1] == '\t')) { e[-1] = '\0'; --e; } if (*tok) { dmDnsServerLanMapAdd(ent->id, tok, index++); } tok = strtok_r(NULL, ",", &save); } free(dup); } tpConfig_addOperAndSubForSet(&st, TPCONFIG_OPER_MOD | TPCONFIG_OPER_PUB, DNSPROXYSHELL_SUB_NAME); tpConfig_addZsetNameForSet(&st, TPZSET_DNSPROXY_DNSSERVER); PFM_IF_FAIL_DONE(ret, tpConfig_set(&st)); done: tpConfig_setResourceFree(&st); return (ret == PFM_ERR_C_OK) ? ERR_NO_ERROR : ret; }
最新发布
10-22
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值