首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PHP和MySQL上记录应用程序活动

问在PHP和MySQL上记录应用程序活动
EN

Stack Overflow用户
提问于 2015-12-28 15:55:12
回答 1查看 245关注 0票数 0

我试着在我的数据库上做一个小的记录表。

用户

代码语言:javascript
复制
+----+------+
| id | name |
+----+------+
|  1 | FOO  |
|  2 | BAR  |
|  3 | LOS  |
+----+------+

Log_Users

代码语言:javascript
复制
+-------------+-------------------+------+-----+-------------------+-----------------------------+
| Field       | Type              | Null | Key | Default           | Extra                       |
+-------------+-------------------+------+-----+-------------------+-----------------------------+
| id          | int(11)           | NO   | PRI | NULL              | auto_increment              |
| old_id      | int(11)           | YES  |     | NULL              |                             |
| old_name    | varchar(100)      | YES  |     | NULL              |                             |
| new_id      | int(11)           | YES  |     | NULL              |                             |
| new_name    | varchar(100)      | YES  |     | NULL              |                             |
| action_type | enum('C','U','D') | YES  |     | NULL              |                             |
| time        | timestamp         | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
| doers       | int(11)           | YES  |     | NULL              |                             |
+-------------+-------------------+------+-----+-------------------+-----------------------------+

我有一个使用PHP创建的小型应用程序,用于将用户的id保存到会话中。如何将这个用户的id值(在PHP会话上)发送到其中一个表的触发器,以记录他们的活动,比如删除另一个用户或更新他们?我尝试使用日志表上的触发器来完成所有的事情,比如这样的事情。

代码语言:javascript
复制
CREATE TRIGGER userTrigger BEFORE INSERT ON Log_Users FOR EACH ROW
BEGIN
    IF(new.action_type = 'C') THEN
        INSERT INTO Users(id, name) VALUE(new.new_id, new.new_name);
    ELSEIF(new.action_type = 'U') THEN
        UPDATE Users SET id = new.new_id, name = new.new_name WHERE id = new.old_id;
    ELSEIF(new.action_type = 'D') THEN
        SET new.old_name = (SELECT name FROM Users WHERE id = new.old_id);
        DELETE FROM Users WHERE id = new.old_id;
    END IF;
END~

但是,当用户在同一列上更新多个记录时,我正在为这个问题而挣扎。最后,如何使用PHP和MySQL进行最优活动日志记录,以及如何做到这一点?我目前还没有解决这个问题的办法。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-12-28 16:03:14

我从来没有用触发器做过这件事,所以我很遗憾地帮不了你。我通常是怎么做到的:

您的用户永远不能直接访问mysql或phpmyadmin,他们应该使用您提供的PHP脚本创建、编辑、删除和其他任何东西。通过这种方式,您可以完全控制用户可以和不能做的事情,并且可以缩小执行的可定位操作范围,因此创建日志要容易得多。例如:

您有一个php脚本,用户用来做一些事情并插入一个新行,然后在日志表上做一个插入,记录下最后的操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34496623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档