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

我的桌子 “活动” 非常简单,包含以下列:

  • Activity_id-主要键
  • USER_ID-用户的外键
  • 操作 - 执行查询类型(选择,更新,删除)
  • 表 - 受影响表的名称
  • 行 - 受影响的行的名称

我目前正在做的是在执行查询时,我将其另一个查询插入我的 “活动” 桌子。

代码:

//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_update和on_delete Triggers上为您的表编写所有更改的详细信息表上创建审核活动表的详细信息

其他提示

如何创建触发器?

Thia在PHP中进行审核不是一个好主意。

您如何制作班级的新方法,说 $db->ql() (从 query/log)首先制作正常查询,而不是采用 mysql_affected_rows() 它做的事情像

insert into logs set when = now(), query_string = "{$query}", affected_rows = "{$affected_rows}"

这样一来,您将拥有完整的查询历史记录,而不仅仅是查询类型及其运行的表格。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top