PHP上的MySQL回滚(不是MySQL)错误

时间:2016-03-13 13:39:59

标签: php mysql pdo transactions

我看过,但无法在任何地方看到此查询。这可能是因为这是一个愚蠢的问题 - 我不知道自己不知道的事情!

我在一个封闭式用户测试版的中途,有许多恐怖和比瑞士奶酪更多的安全漏洞。这只是一个概念验证的事情,看看是否有人感兴趣。它最终会由知道自己在做什么的人正确编码。 (目前只是我看到它。)

我遇到了一个新问题。一切都很顺利,但有时如果我遇到PHP错误,则会将错误的数据写入数据库,这会在以后读取数据时导致问题。它是完全有效的数据,所以数据库不会抛出错误,但我想崩溃并去修复它而不用任何数据留在数据库中,直到修复PHP。

我还没有使用beginTransaction commit rollback(我稍微与PDO斗争)但这似乎是解决这个问题的正确方法。

SO ....

有没有一种方法可以在一个相当繁忙的处理开始时放置beginTransaction"处理"文件,然后在最后做一个commit并让它在PHP失败时失败?

如果有解决方案,那么我将离开并重做文件,以便我可以使用此方式,对于这个非常不整洁的测试版,我将忽略beginTransaction

感谢任何指针无法在任何地方找到此信息。我知道如果有一种方法可以做到这一点会有很多答案,但如果有的话,我一定是在使用糟糕的搜索字符串。

编辑: PS我应该说PHP 警告和错误。我的大多数问题都与警告有关,所以当它应该是150时,我最终会将0存储在数据库中,因为变量由于输入错误而被错误命名 - 这类事情。

1 个答案:

答案 0 :(得分:0)

  

有没有办法在相当繁忙的“处理”文件的开头放置beginTransaction,然后在最后执行提交并让它在PHP失败时失败?

如果您希望您的事务在任何PHP错误上失败,那么只需创建一个简单的错误处理程序,如here,并将您的数据库内容放在begin和commit之间。

因此,PHP错误将成为异常,未捕获的异常是致命错误,在PHP中止的致命错误上,在中止PHP将关闭mysql连接并且关闭时Mysql将回滚所有已执行的查询。