我有一个简单的 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 |
+------+------------+-------------------------------------------------------------+--------------+
(注意右侧的新列包含旧的更改数据。)
我意识到这可能会因为一次更改多个值而变得棘手,但是任何关于在哪里查看的指导都会很棒。谢谢!