gpt4 book ai didi

PHP 使用 try-catch 进行多个数据库查询

转载 作者:行者123 更新时间:2023-12-02 05:41:55 25 4
gpt4 key购买 nike

我正在尝试实现处理数据库错误的最佳方法。我正在使用 mvc 框架 (codeigniter)。当我去创建我的对象时,我最终对不同的表进行了多次查询。

我遇到的问题是,如果第一个查询成功,而第二个查询失败,我会得到一个错误。但是,第一个查询仍然成功,数据已经在该表中。

我想做的是将所有查询包装在一个 try block 中,这样,如果其中任何一个查询失败,则不会完成任何查询。

是否有更好的方法来处理这种情况(可能特定于 codeigniter),即回滚更改?

最佳答案

try block 不会直接这样做......

您需要支持事务的表,即 InnoDB 表

首先,您需要将数据库表的数据库引擎更改为 InnoDB(如果它们无论如何都是 MyISAM)。

在进行数据库操作之前,需要先启动一个事务(网上查一下适合自己的方法)。我使用 PDO,所以我通常会这样做:

$pdoObject->startTransaction();

因此根据您查询的返回值,如果成功则继续下一个查询,否则您将执行 rollback() 并结束执行。在这一点上,您的 try...catch 可能会有用,因为您可以决定在查询执行失败的情况下抛出异常。您捕获它并执行 rollback()

如果一切都成功,你需要做一个 commit() 否则更改不会被反射(reflect)

注意:只有 InnoDB 表支持 MySQL 中的事务

关于PHP 使用 try-catch 进行多个数据库查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10835185/

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