搜索

首页  >  问答  >  正文

php中try catch 和 mysql中的事务的关系

用了try catch 是不是就不需要再用mysql的事务了?

伊谢尔伦伊谢尔伦2727 天前1011

全部回复(3)我来回复

  • 三叔

    三叔2017-06-07 09:25:24

    看你try catch是否有对数据库进行操作,当然涉及对多表更新插入,为了保证数据的完整性,必须开启事务操作

    //開啟事務
    try {
    //完成提交事務
    } catch(throw $e) {
    //rollback
    }

    回复
    0
  • 给我你的怀抱

    给我你的怀抱2017-06-07 09:25:24

    取决于你的catch里是什么,如果try后面就一句,抛异常了,就没有commit,OK。
    如果doOne执行了,你没有用事务,他autocommit了。你再catch要把doOne的单独回滚还是怎么办?
    下面是两句,如果你有10句打算怎么catch?

    try {
     doOne
     doTwo
    } catch(throw $e) {
    //rollback
    }

    回复
    0
  • 天蓬老师

    天蓬老师2017-06-07 09:25:24

    事务和 try catch是两个东西,之所以在启动事务的时候使用try catch是因为如果在使用pdo mysqli这类的扩展的时候,数据库报错会给 php 返回一个错误,让 php 执行的程序终止,从而不能执行到 rollback这一步的函数命令(在执行录入的时候程序就中断了),而使用try catch 再执行事务操作的时候就安全许多

    要分清楚try catch是属于php java 这类的逻辑操作的东西,而transation是属于数据库的东西,两者可以配合但是不能替代

    回复
    0
  • 取消回复