我决定在我的数据库中创建一个新表,用于审核在我的数据库上执行的所有操作。
我的表“活动”非常简单,包含以下列:
我现在正在做的是当执行查询时,我在其后面有另一个查询,它将信息插入我的“activity”表。
CODE:
//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个单独的查询?
由于
答案 0 :(得分:2)
为您的表创建ON INSERT,ON_UPDATE和ON_DELETE触发器,用于写入审计活动表的所有更改的详细信息
答案 1 :(得分:1)
创建触发器怎么样?
在PHP中进行审核并不是一个好主意。
答案 2 :(得分:1)
你为自己的课程制作新方法怎么样,比$db->ql()
首先进行正常查询query/log
,而不是mysql_affected_rows()
,它会像{ p>
insert into logs set when = now(), query_string = "{$query}", affected_rows = "{$affected_rows}"
通过这种方式,您将拥有查询的完整历史记录,而不仅仅是查询类型和运行的表。