我应该
$dbh->beginTransaction();
try{
或者
try{
$dbh->beginTransaction();
答案 0 :(得分:4)
这并不重要,它将运行代码无关紧要的位置。
但是您想将rollback()
放在catch
中,如果您将begin
放在外面,那么使用该设置就无法读取。
我会在try
内投票。
答案 1 :(得分:1)
将其添加到try
/ catch
块中,以便您可以抓住任何PDOException
:
try {
$dbh->beginTransaction(); // start transaction
$stmt = $dbh->query($query); // run your query
$dbh->commit(); // commit
} catch(PDOException $ex) { // if exception, catch it
$dbh->rollBack(); // rollback query
echo $ex->getMessage(); // echo exception message
}
答案 2 :(得分:0)
如果你想捕捉beginTranscation方法应该抛出的可能错误,请转到第二个。
答案 3 :(得分:0)
在这种情况下无关紧要,因为beginTransaction在失败时将返回false。如果它抛出了异常,你会希望它在一个嵌套的try块中(否则你会在捕获因为没有启动事务而失败的异常后执行rollBack())。
答案 4 :(得分:0)
这可能并不重要。但是,最好将beginTransaction
置于<{1}}之外。当try
失败时,它不应执行beginTransaction
。