【发布时间】:2012-03-07 18:32:02
【问题描述】:
我决定在我的数据库中创建一个新表,用于审核对我的数据库执行的所有操作。
我的表“活动”相当简单,包含以下列:
- activity_id - 主键
- user_id - 用户的外键
- action - 正在执行的查询类型(SELECT、UPDATE、DELETE)
- 表 - 受影响表的名称
- 行 - 受影响行的名称
我现在正在做的是,当一个查询被执行时,我之后有另一个查询,它将信息插入到我的 "activity" 表中。
代码:
//query
$db->query("DELETE FROM foo WHERE id = '$foo->id'");
//activity record query
$db->query("INSERT INTO acitivity ( user_id, action, table, row ) VALUES ('$user->id', 'Deleted' , '$foo->id', 'foo')");
如您所见,我必须为每个查询手动执行此操作,并且我的系统中有 100 多个查询,我真的不想输入单个查询来记录发生的情况。
我想知道 MySQL 中是否有任何功能可以告诉我已经执行了哪些操作,或者 PHP 中是否有任何库或技术可以帮助我?
或者我注定要在我的系统中写出 100 个单独的查询?
谢谢
【问题讨论】:
-
使用 mysql binlog 它记录几乎所有的变化。
标签: php mysql logging audit-logging