php - 记录在数据库上执行了哪些事件的方法? -MySQL/PHP

标签 php mysql logging audit-logging

我决定在我的数据库中创建一个新表,用于审计在我的数据库上执行的所有操作。

我的表格“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/

相关文章:

java - Log4j-2.6.2 基本配置器未配置日志记录级别

php - 这段代码中可能存在 SQL 注入(inject)吗?

php - 如何加速 file_get_contents?

跨列的 MySQL 不同值

mysql - 低 mysql 索引基数但数据多样

java - slf4j & log4j2 maven 设置查询

php - 如何从单个 MYSQL 查询中获取要删除的图像列表

php - 我需要 ON event_sheduler 的 super 权限

mysql - 存储由 0 和 1 组成的长数字的最佳数据类型

c# - 使用带有目标对象信息的 MEF 注入(inject)对象