PHP pdo,如何将执行到数据库的每个查询作为日志存储到同一数据库中的表

时间:2014-06-07 13:15:24

标签: php mysql pdo

使用php5.5和mysql5.5,开发了一个带有PDO连接的应用程序。 现在作为日志表我想创建一个表(db_log):

id--------auto
query ----query 
create----curent time
user------session-user
例如,

将数据库中的每个插入,更新和删除操作存储到提及表中 有一些名为(tbl_temp)的表有一些coumns,用户来运行查询,如

(DELETE * FROM tbl_temp where id = 1) from the user (user1)

此处此查询的运行方式类似于(delete.php)的页面。 它应该将查询保存在 db_log

的表中
id = 1
query = DELETE * FROM tbl_temp where id = 1
create = datetime
user = user1

这样我将如何能够记录用户在数据库上的每个动作并控制用户活动,

1 - 这里我需要将查询传递给每个页面中的 db_log ,否则我可以构建一个类 2-在网上有任何好的解决方案或示例可供学习。

1 个答案:

答案 0 :(得分:0)

您可以在要记录的所有表上创建插入/更新/删除触发器。在该触发器中,您将数据复制到日志表中。

例如:

delimiter |
CREATE TRIGGER log_insert_tbl_temp BEFORE INSERT ON tbl_temp
FOR EACH ROW BEGIN
   insert into db_log (table_name, action, id)
   select 'tbl_temp', 'insert', NEW.id;       
END
|
delimiter ;