微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何确保两个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,交易就是答案。如果您选择的存储引擎不支持它们,并且您遇到这种情况,那么您可能选择了错误的存储引擎。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。