php - ZF2保存到多个表,(1)如果数据库错误则回滚更改(2)显示数据库错误

标签 php mysql zend-framework2

在 ZF2 中,我有一个映射器,可将数据保存到 3 个表中。表 1 只有 id,表 2 和表 3 有 id 和更多数据。这些表格依次填写:首先是表 1,然后是表 2,然后是表 3。

假设有一些东西阻止保存到第三个表(例如,唯一约束失败)。因为表是依次填充的,所以表 1 和 2 被填充,但表 3 没有被填充。所以我留下了表 1 和表 2 中未使用的数据。

如果出现数据库错误,如何删除表 1 和表 2 中创建的值,并在第三个表中显示错误消息?

最佳答案

找到了答案。

https://stackoverflow.com/a/13862746/4685379

但是,这个答案没有指定如何实现对多个表的插入。关键是将所有插入放在 beginTransaction()commit() 方法之间,如下所示:

try {
    $this->getAdapter()->getDriver()->getConnection()->beginTransaction();

    // your inserts go here

    $this->getAdapter()->getDriver()->getConnection()->commit();
} catch (\Exception $e) {
    $this->getAdapter()->getDriver()->getConnection()->rollback();
    throw $e;
}

然后 rollback() 进入 catch block 。

关于php - ZF2保存到多个表,(1)如果数据库错误则回滚更改(2)显示数据库错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35850625/

相关文章:

php - 如何使用 PHP 在 SQL Server 中转义字符串?

PHP 从 MySQL 导出到 CSV

php - jQuery .post 帖子元素

mysql - 带有 DoctrineExtensions 的 doctrine 2 中的 FIND_IN_SET

php - 如何使用 InputFilterManager 在 Zf2 中构建自定义 InputFilters

php - 如何从数据库中选择日、周、月、年的信息?

MySQL 查询简化

php - 为什么我的查询在 phpmyadmin 中有效,但在我的 php 中无效?

mysql - 连续 5 次从 DB 休假

zend-framework - 如何将 ZF2 与 Doctrine Mongo ODM 集成?