我决定在我的数据库中创建一个新表,用于审计对数据库执行的所有操作。
我的表“activity”相当简单,包含以下列:
- activity_id - 主键 - user_id - 用户的外键 - action - 执行的查询类型(SELECT、UPDATE、DELETE) - table - 受影响表的名称 - row - 受影响行的名称
目前我所做的是,当执行一个查询后,我紧接着再执行另一个查询,将信息插入到我的“activity”表中。
代码如下:
我的表“activity”相当简单,包含以下列:
- activity_id - 主键 - user_id - 用户的外键 - action - 执行的查询类型(SELECT、UPDATE、DELETE) - table - 受影响表的名称 - row - 受影响行的名称
目前我所做的是,当执行一个查询后,我紧接着再执行另一个查询,将信息插入到我的“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个单独的查询?
谢谢