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。(我可能会选择基于触发器的解决方案。)