PHP
PDO::commit()文档声明该方法在成功时返回TRUE,在失败时返回FALSE.这是指beginTransaction()和commit()之间语句执行的成功还是失败?
例如,从文档中:
$dbh->beginTransaction(); $sql = 'INSERT INTO fruit (name,colour,calories) VALUES (?,?,?)'; $sth = $dbh->prepare($sql); foreach ($fruits as $fruit) { $sth->execute([ $fruit->name,$fruit->colour,$fruit->calories,]); } $dbh->commit();
如果上述任何执行失败,由于原子事务的“全有或全无”基础,commit()方法是否会返回false?
返回值基于pdo :: commit本身,而不是您尝试提交的事务.
当没有事务处于活动状态时它返回FALSE,但是当它应该返回TRUE或FALSE时它不是很清楚.
原文链接:https://www.f2er.com/php/240299.html当没有事务处于活动状态时它返回FALSE,但是当它应该返回TRUE或FALSE时它不是很清楚.
事务本身内执行的查询将成功或失败.
使用Mr.Tk的示例,如果可能,将提交事务,并且在“try”块中执行查询时不会发生错误,并且如果在“try”块中发生错误则回滚.
当只评估“try”块中执行的查询时,我个人会尝试捕获PDOException而不是正常的Exception.
$dbh->beginTransaction(); try { // insert/update query $dbh->commit(); } catch (PDOException $e) { $dbh->rollBack(); }