我决定在我的数据库中创建一个新表,用于审计在我的数据库上执行的所有操作。
我的表格“activity”相当简单,包含以下列:
- activity_id - 主键
- user_id - 用户的外键
- action - 正在执行的查询类型(SELECT、UPDATE、DELETE)
- 表 - 受影响表的名称
- 行 - 受影响行的名称
我现在正在做的是当一个查询被执行时,我在它之后有另一个查询,它将信息插入到我的“事件”表中。
代码:
//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 个单独的查询?
谢谢
最佳答案
为您的表创建 ON INSERT、ON_UPDATE 和 ON_DELETE 触发器,将所有更改的详细信息写入审计事件表
关于php - 记录在数据库上执行了哪些事件的方法? -MySQL/PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9309944/