mysqli与pdo有什么比较好的方式捕获错误,进行事务?

mysqli与pdo有什么比较好的方式捕获错误,进行事务?

//执行语句
    //参数为是否开启事务默认1:开启,其他均为关闭
    public function exe($commit = 1)
    {
        if($commit==1){
            $this->beginCommit();
        }
        //判断影响的条数是否正常,注意这里每次只能插入一条
        $q = $this->stmt->execute();
        if (!$q) {
//            (new BaseException($this->con->error))->__warn();
            (new Tip("预处理执行异常错误代码:" . $this->con->error))->tip();
            if($commit==1){
                $this->rollback();
            }
            return false;

        }
        if ($this->stmt->affected_rows != 1) {
            (new Tip("数据未插入成功请检查代码"))->tip();
            if($commit==1){
                $this->rollback();
            }
            return false;
        }
        if($commit==1){
            $this->realCommit();
        }
        return $this;
    }

------------------------------------------------------------------------------------------------------------------------

以上是整体代码中的一部分,我的问题是关于事务处理的,老师您看代码,我觉得应该有一个比较完善的mysqli运行错误的捕获机制,如代码中什么时候开启必须通过一个参数来判断,每一种异常发生都需要回滚,感觉代码写的太冗余。

------------------------------------------------------------------------------------------------------------------------

问题:

1.有没有什么好的最好是面向对象的方式去捕获错误,从而去回滚?如果没有我总是有印象,大多数都使用try...catch 解决的,能不能讲讲怎么具体使用呢?

2.我并不知道什么时候应该开始事务,什么时候应该回滚,什么时候应该提交,视频里老师的例子太浅了,我这是拍脑袋想的,麻烦老师讲讲在增删改查中正确的运用事务的流程

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

您好,function并不需要public修饰。如果错误,是根据操作进行判断,根据操作的返回结果进行判断,或者使用try-catch。

2.事务使用流程:连接数据库后,开启事务。操作sql语句,根据结果判断是否操作成功,成功则提交事务,失败则事务回滚。增删改流程是一样的。查询并不涉及修改数据,不需要使用事务。

http://img1.sycdn.imooc.com//climg/5c6a450100012f6607480546.jpg

祝学习愉快!

  • 轩辕小齐V 提问者 #1
    谢谢老师,pdo 可以用什么方法确定影响条数呢?貌似视频里的老师的意思是pdo的execute 自带返回影响条数 是不是呀?
    2019-02-19 12:57:04
  • 好帮手慕查理 回复 提问者 轩辕小齐V #2
    您好,可以使用$pdo->rowCount()返回受上一个SQL语句影响的行数;$pdo->fetchAll():返回包含所有结果集行的数组。祝学习愉快!
    2019-02-19 14:07:27
  • 轩辕小齐V 提问者 回复 好帮手慕查理 #3
    感谢!!!!
    2019-02-19 16:02:54
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师