Bedeutet Try Catch, dass ich keine MySQL-Transaktionen mehr verwenden muss?
小伙看你根骨奇佳,潜力无限,来学PHP伐。
看你try catch是否有對數據庫進行操作,當然涉及對多表更新插入,為了保證數據的完整性,必須開啟事務操作
//開啟事務 try { //完成提交事務 } catch(throw $e) { //rollback }
取决于你的catch里是什么,如果try后面就一句,抛异常了,就没有commit,OK。如果doOne执行了,你没有用事务,他autocommit了。你再catch要把doOne的单独回滚还是怎么办?下面是两句,如果你有10句打算怎么catch?
try { doOne doTwo } catch(throw $e) { //rollback }
事务和 try catch是两个东西,之所以在启动事务的时候使用try catch是因为如果在使用pdo mysqli这类的扩展的时候,数据库报错会给 php 返回一个错误,让 php 执行的程序终止,从而不能执行到 rollback这一步的函数命令(在执行录入的时候程序就中断了),而使用try catch 再执行事务操作的时候就安全许多
try catch
pdo
mysqli
rollback
要分清楚try catch是属于php java 这类的逻辑操作的东西,而transation是属于数据库的东西,两者可以配合但是不能替代
php
java
transation
看你try catch是否有對數據庫進行操作,當然涉及對多表更新插入,為了保證數據的完整性,必須開啟事務操作
取决于你的catch里是什么,如果try后面就一句,抛异常了,就没有commit,OK。
如果doOne执行了,你没有用事务,他autocommit了。你再catch要把doOne的单独回滚还是怎么办?
下面是两句,如果你有10句打算怎么catch?
事务和
try catch
是两个东西,之所以在启动事务的时候使用try catch
是因为如果在使用pdo
mysqli
这类的扩展的时候,数据库报错会给 php 返回一个错误,让 php 执行的程序终止,从而不能执行到rollback
这一步的函数命令(在执行录入的时候程序就中断了),而使用try catch
再执行事务操作的时候就安全许多要分清楚
try catch
是属于php
java
这类的逻辑操作的东西,而transation
是属于数据库的东西,两者可以配合但是不能替代