Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHPPDO,如何将对数据库执行的每个查询作为日志存储到同一数据库中的表中_Php_Mysql_Pdo - Fatal编程技术网

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

PHPPDO,如何将对数据库执行的每个查询作为日志存储到同一数据库中的表中,php,mysql,pdo,Php,Mysql,Pdo,通过使用php5.5和mysql5.5,我们开发了一个带有PDO连接的应用程序。 现在作为日志表,我想创建一个表(db_log): 并将数据库上的每个插入、更新和删除操作存储到一个提及表中 有一个名为(tbl_temp)的表,其中包含一些coumn,用户像这样来运行查询 (DELETE * FROM tbl_temp where id = 1) from the user (user1) 当这个查询像从(delete.php)页面运行时。。 它应该将查询保存在db\u log的表中 id =

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

并将数据库上的每个插入、更新和删除操作存储到一个提及表中 有一个名为(tbl_temp)的表,其中包含一些coumn,用户像这样来运行查询

(DELETE * FROM tbl_temp where id = 1) from the user (user1)
当这个查询像从(delete.php)页面运行时。。 它应该将查询保存在db\u log的表中

id = 1
query = DELETE * FROM tbl_temp where id = 1
create = datetime
user = user1
这样我就可以在数据库上记录用户的每个动作并控制用户的活动

1-在这里,我需要在每个页面中将查询传递到db\u log,或者我可以构建一个类
2-网络上是否有好的解决方案或示例可供学习。

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

例如:

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 ;

这意味着我必须在插入、更新和删除时创建具有相同列和触发器的相同表,这里我希望每个操作都创建为日志表上的新行,这取决于您想要记录的内容。如果你想记录所有数据,那么是的-你必须为每个表创建一个备份表。你的意思是这是一种复制类型,但我需要一个记录表来存储数据库上的每个操作,并跟踪更改,因为每个用户都有相同的写入,所以需要知道哪些用户没有。非常相似
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 ;