MySQL / PHP:我可以从MySQL查询中获取更新或删除的值吗?

时间:2013-03-30 01:58:15

标签: php mysql logging

我有一个简单的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 |
+------+------------+-------------------------------------------------------------+--------------+

(注意右边的新列和旧的更改数据。)

我意识到,一次更改多个值可能会变得棘手,但任何关于在何处查看的指导都会很棒。谢谢!

1 个答案:

答案 0 :(得分:0)

如果你问我认为你是什么,那么不,你做不到。一旦数据被替换或删除,它就会永远消失。

如果您真的想要这样做,那么您需要保留数据的版本,并且只需要设置新的更新计数器或其他内容的插入,这实际上不会是对你有趣。