【问题标题】:PHP/MYSQL action on updated field更新字段上的 PHP/MYSQL 操作
【发布时间】:2011-06-05 17:35:30
【问题描述】:

我遇到了一个小问题,我需要生成一份报告,重点关注数据库中某些字段的更改。我想做什么,是这样的

“如果已更新,请在单独的字段中插入今天的日期”

这样,当我生成报告时,我可以通过检查日期来验证哪些条目已被修改。

问题是,我不确定如何使用 php/codeigniter 来做到这一点

感谢您的提示!

【问题讨论】:

    标签: php mysql codeigniter if-statement


    【解决方案1】:

    您可以在表结构中添加时间戳字段

    your_field timestamp default current_timestamp on update current_timestamp
    

    查看手册了解可用语法

    http://dev.mysql.com/doc/refman/5.0/en/timestamp.html

    编辑。 如果仅在特定字段发生更改时才需要更新时间,则需要触发器。

    create table test (
    id int not null auto_increment primary key,
    field1 int,
    field2 int,
    field3 int,
    last_update datetime)
    engine = myisam;
    
    
    delimiter //
    drop trigger if exists update_time //
    create trigger update_time before update on test
    for each row begin
        if new.field2 <> old.field2 or new.field3 <> old.field3 then
            set new.last_update = now();
        end if;
    end //
    delimiter ;
    

    在我的示例中,只有当 field2 或 field3 发生变化时,last_update 字段才会更新为当前时间。

    【讨论】:

    • 所以如果我正确理解你的代码,PHP 会知道 new.field2 和 old.field2 是什么并比较两者,如果不相等,更新时间?
    • Php 甚至没有参与我的回答。它只是一个 mysql 触发器,其中 old 是已存储的值,new 是新值。如果它们不同,则更新时间字段。
    • 我的表格已经制作好了,我已经有大约 500 个条目了。如何添加该分隔符代码?
    • 您必须调整我示例中的触发器代码以满足您的需求,但是如果您不知道什么是 mysql 触发器以及必须将它放在哪里,那就很难了。跨度>
    • 没关系,找到我自己的答案,其他人阅读这个帖子,看看这个wiki.phpmyadmin.net/pma/Trigger
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 2018-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多