我有一个简单的PHP网站,目前我将所有MySQL数据库查询记录到“日志”表中,因此记录了何时以及由谁做出的更改。问题是:对于所有更新和删除查询,不会记录旧值。
是否有一种简单的方法可以返回已更新或删除的旧值?我开始玩解析查询字符串,但它看起来很乱,很复杂而且完全错误。
以下是我想要做的一个例子:如果正在执行的查询是:
UPDATE members SET email='joe@this.com' WHERE memberId=123;
我正在录制一张这样的桌子:
+------+------------+-------------------------------------------------------------+
| User | Date | Query |
+------+------------+-------------------------------------------------------------+
| joe | 2013-03-29 | UPDATE members SET email='joe@this.com' WHERE memberId=123; |
+------+------------+-------------------------------------------------------------+
我希望桌子看起来像:
+------+------------+-------------------------------------------------------------+--------------+
| User | Date | Query | Old Values |
+------+------------+-------------------------------------------------------------+--------------+
| joe | 2013-03-29 | UPDATE members SET email='joe@this.com' WHERE memberId=123; | joe@that.com |
+------+------------+-------------------------------------------------------------+--------------+
(注意右边的新列和旧的更改数据。)
我意识到,一次更改多个值可能会变得棘手,但任何关于在何处查看的指导都会很棒。谢谢!
答案 0 :(得分:0)
如果你问我认为你是什么,那么不,你做不到。一旦数据被替换或删除,它就会永远消失。
如果您真的想要这样做,那么您需要保留数据的版本,并且只需要设置新的更新计数器或其他内容的插入,这实际上不会是对你有趣。