Php 如何在表中存储用户操作(完成的查询)?
这就是我的情况: 我有一个管理员用户,可以添加、删除和编辑其他用户。我正在寻找一个解决方案,如何记录管理员的行动。我是否应该比较查询前后受影响的表,以及如何将差异存储在另一个表中 这是一张需要填写的表格:Php 如何在表中存储用户操作(完成的查询)?,php,sql,rdbms,Php,Sql,Rdbms,这就是我的情况: 我有一个管理员用户,可以添加、删除和编辑其他用户。我正在寻找一个解决方案,如何记录管理员的行动。我是否应该比较查询前后受影响的表,以及如何将差异存储在另一个表中 这是一张需要填写的表格: TABLE `t_user` ( `user_id` int(11) NOT NULL, `username` varchar(255) COLLATE utf8_unicode_ci NOT NULL, `password` char(32) COLLATE utf8_unic
TABLE `t_user` (
`user_id` int(11) NOT NULL,
`username` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`password` char(32) COLLATE utf8_unicode_ci NOT NULL,
`email` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`reg_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`active` tinyint(1) NOT NULL,
`current_desk_book` int(11) NOT NULL,
`last_login` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
假设管理员试图删除id为3的用户,则查询将为
"DELETE FROM t_user WHERE user_id= 3"
以下是已删除的用户数据:
(3, 'user3', 'fa6daddc77ac9b5ee42ffd31e7d6e014', 'user3@mail.bg', '2016-09-08 11:29:38', 1, 1, NULL)
我想在另一个表中存储“已删除”+已删除的用户数据。为什么要将其存储在数据库中?任何具体要求。通常人们将这些信息存储在日志(文件)中。我建议,除了删除的use数据外,您还应该存储他执行的查询,这将帮助您更好地跟踪情况 CREATE TRIGGER log_user_delete AFTER DELETE on users FOR EACH ROW BEGIN INSERT INTO users_log (user_id, username, etc, deletedby_newfield, deletedtime_newfield) values (old.user_id, old.username, '1', NOW()); END
要存储不同的代码,您可以尝试以下操作-每当他使用
where
子句执行命令时,您都会使用该子句执行select
语句,并将其存储在日志中,并在其命令执行完后再次重复,但delete
情况除外 为什么要将其存储在数据库中?任何具体要求。通常人们将这些信息存储在日志(文件)中。我建议,除了删除的use数据外,您还应该存储他执行的查询,这将帮助您更好地跟踪情况
要存储不同的代码,您可以尝试以下操作-每当他使用where
子句执行命令时,您都会使用该子句执行select
语句,并将其存储在日志中,并在其命令执行完后再次重复,但delete
情况除外 两种方式:
简单的解决方案,最好有一个标记为“删除”,并将其标记为“1”管理员删除它。这是一种软删除方法
硬删除:创建一个类似于基本用户表的日志表。
当删除发生时,有一个触发器。把它放在另一张桌子里。
CREATE TRIGGER log_user_delete AFTER DELETE on users
FOR EACH ROW
BEGIN
INSERT INTO users_log (user_id, username, etc, deletedby_newfield, deletedtime_newfield) values (old.user_id, old.username, '1', NOW());
END
在用户上删除后创建触发器日志\用户\删除
每行
开始
将值(old.user\u id,old.username,'1',NOW())插入用户日志(user\u id,username等,deletedby\u newfield,deletedtime\u newfield);
结束
有两种方式:
简单的解决方案,最好有一个标记为“删除”,并将其标记为“1”管理员删除它。这是一种软删除方法
硬删除:创建一个类似于基本用户表的日志表。
当删除发生时,有一个触发器。把它放在另一张桌子里。
CREATE TRIGGER log_user_delete AFTER DELETE on users
FOR EACH ROW
BEGIN
INSERT INTO users_log (user_id, username, etc, deletedby_newfield, deletedtime_newfield) values (old.user_id, old.username, '1', NOW());
END
在用户上删除后创建触发器日志\用户\删除
每行
开始
将值(old.user\u id,old.username,'1',NOW())插入用户日志(user\u id,username等,deletedby\u newfield,deletedtime\u newfield);
结束
添加表定义和一些示例表数据,以及预期结果。标记您正在使用的dbms。(我可能会使用基于触发器的解决方案。)添加表定义和一些示例表数据,以及预期结果。标记您正在使用的dbms。(我可能会选择基于触发器的解决方案。)