PHP:如果用户未按下提交按钮,Mysql 回滚多个查询(通过 ajax 完成)
Posted
技术标签:
【中文标题】PHP:如果用户未按下提交按钮,Mysql 回滚多个查询(通过 ajax 完成)【英文标题】:PHP: Mysql rollback multiple query (done via ajax) if user not pressed submit button 【发布时间】:2014-11-03 16:41:30 【问题描述】:我有一个页面,在这个页面中通过 ajax jQuery 执行插入/更新/删除操作。
如果用户不按提交按钮或按取消按钮,则回滚通过 ajax 执行的所有更改/查询。 临时表不可能,因为有很多数据。
请建议我这样做的正确方法。
【问题讨论】:
临时表也不错,如果使用得当的话,即使有很多数据。您还可以使用会话。将您的数据存储在用户的会话中,一旦您的表单被提交,请更新您的表格。 我会考虑将它存储在我自己的会话中,就像凯文所说的那样。我不确定临时表及其限制。 会话是您唯一的选择。添加ajax数据后,你有3种可能的结果,提交点击、取消点击、页面放弃。除了会话之外,没有其他方法可以处理 #3。 我会尝试使用会话或临时表。感谢您的回复。 @KevinLabécot,但管理编辑/更新记录很复杂,因为第一次需要从表中获取数据,然后用户执行操作,我想管理第二次用户操作。 【参考方案1】:检测页面离开事件。然后删除你想要的。
window.onbeforeunload = function (e)
var message = "Your confirmation message goes here.",
e = e || window.event;
// For IE and Firefox
if (e)
e.returnValue = message;
// For Safari
return message;
;
【讨论】:
假设浏览器永远不会崩溃。 哇...这是一个非常糟糕的方法。浏览器会崩溃,onbeforeunload 不是通用的... 最后一步,在事务结束时拉取flag。忽略没有最后一步标志的记录(true)。【参考方案2】:如果您的数据库是 InnoDB,您可以检查mysql Transactions,特别是 ROLLBACK 语句。它会做你的工作。
如果您将查询放在事务中,则可以在提交按钮被按下时提交它,或者在其他情况下回滚它。
【讨论】:
事务不适用于此用例。他说数据是通过 ajax 调用添加的。 @ChrisCaviness 是的,我尝试了事务和回滚。 是的,你是对的,从来没有在 ajax 上使用过它们并认为我会工作以上是关于PHP:如果用户未按下提交按钮,Mysql 回滚多个查询(通过 ajax 完成)的主要内容,如果未能解决你的问题,请参考以下文章