Php 你把开始放在saction()上了吗;在“try”块之前或之内
我该怎么办Php 你把开始放在saction()上了吗;在“try”块之前或之内,php,transactions,Php,Transactions,我该怎么办 $dbh->beginTransaction(); try{ 或 将其添加到try/catch块中,这样您就可以捕获任何PDOException: try { $dbh->beginTransaction(); // start transaction $stmt = $dbh->query($query); // run your query $dbh->commit(); // commit } c
$dbh->beginTransaction();
try{
或
将其添加到
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
}
如果您想捕获BeginTransaction方法应该抛出的可能错误,请转到第二个错误。这并不重要,它将不考虑其位置而运行代码。 但是您希望将
回滚()
放在捕获
中,如果将开始
放在外部,则该设置不可读
我会在
try
中投票,在这种情况下,这无关紧要,因为失败时beginTransaction将返回false。如果它抛出异常,您可能希望它位于嵌套的try块中(否则,您将在捕获异常后执行rollBack(),该异常将失败,因为没有启动任何事务)。这可能并不重要。但是,最好将beginTransaction
放在try
之外。当beginTransaction
失败时,它不应执行回滚
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
}