PHP/MYSQL对更新字段的操作

PHP/MYSQL对更新字段的操作,php,mysql,codeigniter,if-statement,Php,Mysql,Codeigniter,If Statement,我遇到了一个小问题,我需要生成一个报告,重点关注数据库中某些字段的更改。我想做的就是这样 如果已更新,请在单独的字段中插入今天的日期 这样,当我生成报告时,我可以通过检查日期来验证哪些条目已被修改 问题是,我不确定如何使用php/codeigniter实现这一点 谢谢你的提示 您可以将时间戳字段添加到表结构中 your_field timestamp default current_timestamp on update current_timestamp 有关可用的语法,请参阅手册 编辑。

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

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

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

问题是,我不确定如何使用php/codeigniter实现这一点


谢谢你的提示

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

your_field timestamp default current_timestamp on update current_timestamp
有关可用的语法,请参阅手册

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

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 ;
创建表测试(
id int not null自动递增主键,
字段1 int,
字段2 int,
字段3 int,
上次更新日期(时间)
发动机=myisam;
分隔符//删除触发器(如果存在)更新时间//
在测试更新之前创建触发器更新\u时间
每行开始
如果是new.field2 old.field2或new.field3 old.field3,则
设置new.last_update=now();
如果结束;
结束//
定界符

在我的示例中,仅当字段2或字段3发生更改时,上次更新字段才会使用当前时间进行更新。

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

your_field timestamp default current_timestamp on update current_timestamp
有关可用的语法,请参阅手册

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

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 ;
创建表测试(
id int not null自动递增主键,
字段1 int,
字段2 int,
字段3 int,
上次更新日期(时间)
发动机=myisam;
分隔符//
删除触发器(如果存在)更新时间//
在测试更新之前创建触发器更新\u时间
每行开始
如果是new.field2 old.field2或new.field3 old.field3,则
设置new.last_update=now();
如果结束;
结束//
定界符;

在我的示例中,仅当field2或field3发生更改时,last_update字段才会使用当前时间进行更新。

因此,如果我正确理解了您的代码,PHP将知道new.field2和old.field2是什么,并对两者进行比较,如果不相等,则更新时间?我的答案中甚至没有涉及PHP。它只是一个mysql触发器,其中old是已经存储的值,new是新值。如果它们是不同的,则更新时间字段。我的表已经制作好,其中已经有大约500个条目。如何添加分隔符代码?您必须调整我的示例中的触发器代码以满足您的需要,但是如果您不知道什么是mysql触发器以及必须将其放置在何处,这很困难。没关系,我找到了自己的答案,对于其他阅读此线程的人,请检查此代码,以便我正确理解您的代码,PHP将知道new.field2和old.field2是什么,并比较两者,如果不相等,则更新时间?我的答案中甚至没有涉及PHP。它只是一个mysql触发器,其中old是已经存储的值,new是新值。如果它们是不同的,则更新时间字段。我的表已经制作好,其中已经有大约500个条目。如何添加分隔符代码?您必须调整我的示例中的触发器代码以满足您的需要,但是如果您不知道什么是mysql触发器以及必须将其放置在何处,这很困难。不要紧,找到了我自己的答案,对于其他阅读此线程的人,请查看此