如何确保两个MySQL查询成功?

| 我的PHP代码中有两个MySQL查询。 基本上,我需要两个查询才能执行(它们是两个INSERT)查询,并且两个查询都必须成功。例如,如果query1成功但query2不成功;我需要回滚query1,因为两个查询都必须成功。 我正在使用MyISAM,我知道我无法进行回滚等操作,但是有什么办法可以克服我的问题(另一种解决方案)来执行我想要的工作? 它们彼此依赖,因为query1存储来自表单的数据,而query2将其他一些详细信息插入另一个表(该表基本上是一个计数器),该表跟踪引荐系统的总计数。
已邀请:
在我看来,您需要交易。 http://www.techrepublic.com/article/implement-mysql-based-transactions-with-a-new-set-of-php-extensions/6085922 它们使您可以在单个事务中回滚整个系列的数据库修改。
一种选择是将已插入记录的ID存储在第一个表中。如果第二个查询失败,请使用删除查询删除第一个查询插入的记录。 我建议您将引擎更改为InnoDB,以便您可以使用事务。还是您有使用MyISAM的特定原因(例如全文搜索?)
第一次插入后,可以使用mysql_insert_id()获取ID并将其存储。 然后,当您执行第二个查询时,也要获取该ID。如果ID为空,则表示它不成功,并且您拥有旧ID,因此您可以删除它,就像这样
DELETE FROM table WHERE id=\'$insertId\'
编辑: 请注意,这不是一个完整的解决方案,唯一正确的方法是将其转换为InnoDB
交易就是答案。如果您选择的存储引擎不支持它们,并且您遇到这种情况,那么您可能选择了错误的存储引擎。

要回复问题请先登录注册