gpt4 book ai didi

php - MySql PDO 开始事务并将其传递给对象

转载 作者:行者123 更新时间:2023-11-29 08:21:44 26 4
gpt4 key购买 nike

这行得通吗?我会测试它,但我不知道如何使事情中途崩溃。

$db = DB::getDB();
try{
$db->begintransaction();
Invoice::saveInvoice($info, $db);
InvoiceDetails::saveDetails($moreInfo, $db);
$db->commit();
}catch(Exception $e){
$db->rollback();
}

如果它确实有效,除了做一些导致隐式提交的事情之外,还有什么可以让我痛不欲生吗?

最佳答案

我唯一要做的就是修复你的异常处理。例如

catch (Exception $e) {
$db->rollback();
throw $e;
}

这样做可以让您安全地回滚事务,并让错误在您的应用程序中进一步出现。

您甚至可以用您选择的一种方式包装内部异常(可能是 PDOException),例如

$db->rollback();
throw new RuntimeException('Error saving invoice details', 0, $e);

要“让事情半途崩溃”,只需在您的 save* 方法之一中抛出异常,例如

throw new Exception('KA-BLAM!');

关于php - MySql PDO 开始事务并将其传递给对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19217318/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com