PHP / MySQL处理多步插入失败

时间:2017-11-05 15:21:47

标签: php mysql

在我的网站注册过程中,会在单独的表格中进行三次插入以设置新帐户:

  1. 插入用户
  2. INSERT INTO Profile
  3. INSERT INTO ProfileSetup
  4. 目前,如果在流程中的任何一点发生故障,我会终止程序并通知用户发生了错误。如果由于某种原因在步骤3中发生故障,从技术上讲,用户帐户和配置文件是实时的并且用户可以登录,可能导致重大问题。不是一个好的第一印象。

    我想知道最好的办法是什么?如果步骤3失败,我应该返回并删除在步骤1和2中创建的记录吗?

1 个答案:

答案 0 :(得分:0)

  

如果因任何原因在步骤3中发生故障......

理想情况下,所有可能的原因应该被隐藏并内置到设计中,以便您能够在数据库中触及任何内容之前验证数据。 / p>

这是一个验证方法的示例,作为Opencart中帐户创建的一部分(第223行):

https://github.com/opencart/opencart/blob/master/upload/catalog/controller/account/register.php

如您所见,在调用模型中的数据库方法之前检查所有基本要求。

如果你实现这样的事情,我认为你的查询仍然失败的唯一一次是数据库崩溃或操作系统的其他问题。根据我的经验,除非您的设置存在更严重的潜在问题,否则这种情况极为罕见。在这种情况下,我认为上面关于使用交易的评论是很好的建议。