Php Mysql更新但保留旧数据?

Php Mysql更新但保留旧数据?,php,mysql,Php,Mysql,在客户CMS中,客户可以更新其个人信息,如更改地址和名/姓。我使用mysqlUPDATE查询来实现这一点 像这样工作的问题是,人们可以改变他们的信息。例如,将他们的名字从johndoe改为asdfdas。我想保存他们的旧信息 我有什么选择?最好的方法是什么?假设用户有一个唯一的ID,您可以有一个旧的用户信息表并且当您进行更新时,还可以在该表中添加一个新条目。该表将有一个自动生成的ID以及唯一的用户ID和该用户的其他过去信息 用户在此表中可以有多行,但在realUsers表中只能有一行 编辑:如果

在客户CMS中,客户可以更新其个人信息,如更改地址和名/姓。我使用mysql
UPDATE
查询来实现这一点

像这样工作的问题是,人们可以改变他们的信息。例如,将他们的名字从
johndoe
改为
asdfdas
。我想保存他们的旧信息


我有什么选择?最好的方法是什么?

假设用户有一个唯一的ID,您可以有一个
旧的用户信息表
并且当您进行更新时,还可以在该表中添加一个新条目。该表将有一个自动生成的ID以及唯一的用户ID和该用户的其他过去信息

用户在此表中可以有多行,但在real
Users
表中只能有一行


编辑:如果我是你,我会编写一个存储过程来完成这两项工作,以便在情况发生变化时更易于管理。

您可以创建包含以下内容的表

`yourTableID, field, value, date`
然后用触发器更新这个。您可以编写一个
update
触发器,如果旧值被更改,它将添加旧值。查看以了解有关触发器的更多信息

如果您不想使用触发器,显然可以在逻辑中执行相同的操作:只需使用旧值更新历史记录表。但这需要一些技巧来确定是否需要更新它,但这并不复杂


为了便于检索所发生的情况,您可能希望添加“oldvalue”和“newvalue”之类的内容,但实际上并不需要后者,因为在下一次更新中它要么是“old”值,要么是当前值。

为正在更新的数据创建新列
将是
之前的更新列

更新时,将旧信息移动到“更新”列之前的

如果用户再次更新,请附加到由
分隔的
previor\u to\u update\u列
(看起来像一个数组)


这将保留用户更新的所有以前的信息

添加其他字段名版本
并使用插入而不是更新あの答えのとうりに、やってない。
更新
表名
设置
=
+“新值”其中
条件

您必须在同一个表中保留多个记录,以某种方式告诉当前的“活动”记录是什么,或者您可以将旧数据复制到一个存档表中。我喜欢这个,因为我不必创建新表。但是,如何将旧数据移动到新列?我使用的是
foreach($\u POST as$key=>$value){
循环,如果已经设置了
$\u POST
,我想我无法访问旧信息。保存$variable=$\u POST['form\u value'];-->然后在使用新数据更新之前,用当前信息更新前面的\u to\u update\u列(在末尾添加逗号)(如数组))->然后使用表单中的信息进行更新。这可以在存储过程中完成,以保存mysql trips(为了效率)。希望这有帮助:)