0

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

(注意右侧的新列包含旧的更改数据。)

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

4

1 回答 1

0

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

如果您真的想这样做,您将需要保留数据的版本,并且只执行设置新更新计数器或其他内容的插入,这对您来说真的不会很有趣。

于 2013-03-30T02:03:33.173 回答