吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 906|回复: 4
收起左侧

[求助] thinkphp5事务请教

[复制链接]
积木工具箱 发表于 2021-6-18 17:37
[Asm] 纯文本查看 复制代码
        Db::startTrans();
        try {
            $user = Db::query("select * from px_user where account = ?",[$account]);;
            if($user){
                return MyUtil::jsonResult(1,"注册失败,账号已存在",null);
            }else{
                Db::execute("insert into px_user() value(:user_id,:name,:account,:password,:create_time,:update_time,:icon)",$data);
                Db::execute("insert into px_take_a_shot() value(9,?,?)",[null,Db::getLastInsID(),1]);
                // 提交事务
                Db::commit();
                return MyUtil::jsonResult(0,"注册成功",$data);
            }

        } catch (\Exception $e) {
            // 回滚事务
            Db::rollback();
            return MyUtil::jsonResult(1,"错误",$data);
        }


如代码 其中注册失败是直接return的 事务并没有提交 会有影响吗?

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

stu2162583 发表于 2021-6-18 18:01
你可以换一种写法。有问题就throw出来,这样都是走catch,就不需要考虑这个问题了
[PHP] 纯文本查看 复制代码
Db::startTrans();
try {
    $user = Db::query("select * from px_user where account = ?",[$account]);;
    if($user){
                throw new Exception("注册失败,账号已存在");
    }
        
        Db::execute("insert into px_user() value(:user_id,:name,:account,:password,:create_time,:update_time,:icon)",$data);
        Db::execute("insert into px_take_a_shot() value(9,?,?)",[null,Db::getLastInsID(),1]);
        // 提交事务
        Db::commit();
        return MyUtil::jsonResult(0,"注册成功",$data);
 
} catch (\Exception $e) {
    // 回滚事务
    Db::rollback();
    return MyUtil::jsonResult(1,$e->getMessage(),$data);
}

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
积木工具箱 + 1 + 1 热心回复!

查看全部评分

kof21411 发表于 2021-6-18 21:01
其实直接return是可以的,如果throw 不好返回前端
Cyntec 发表于 2021-6-18 21:02
杨十一啊 发表于 2021-6-18 21:14
throw 是可以自定义 自定义throw,然后出现问题直接抛出throw ,传给throw错误码和信息 ,就相当于返回个接口异常
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 02:03

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表