在客户CMS中,客户可以更新他们的个人信息,例如更改他们的地址和名字/姓氏。我使用mysql的UPDATE
查询。Mysql更新但保留旧数据?
问题,像这样的工作是,是,人们可以改变他们的信息。例如。将他们的名字从john doe
更改为asdfdas
。我想保存他们的旧信息。
我有什么选择?做这个的最好方式是什么?
在客户CMS中,客户可以更新他们的个人信息,例如更改他们的地址和名字/姓氏。我使用mysql的UPDATE
查询。Mysql更新但保留旧数据?
问题,像这样的工作是,是,人们可以改变他们的信息。例如。将他们的名字从john doe
更改为asdfdas
。我想保存他们的旧信息。
我有什么选择?做这个的最好方式是什么?
创建更新column
数据的新列将prior_to_update_column
上更新,将旧信息到prior_to_update_column
如果用户再次更新,追加到由,
分隔的prior_to_update_column
(看起来像数组)。
这应该保留以前所有的信息的用户更新
我喜欢这个,因为我不需要创建新表格。我怎样才能将旧数据移动到新列?我正在使用'foreach($ _ POST作为$ key => $ value){'循环,如果已经设置了'$ _POST',我不认为我可以访问旧的信息。 – Linkjuice57 2012-07-31 16:44:36
保存$ variable = $ _POST ['form_value']; - >然后在用新数据更新之前,使用当前信息更新prior_to_update_column(在数组末尾附加一个逗号) - >然后用表单中的信息更新。这可以在存储过程中完成以保存mysql行程(提高效率)。希望这可以帮助 :) – mlishn 2012-07-31 16:50:25
假设用户有一个唯一的ID,你可以有一个old_user_information
表,当你做一个更新也做了新的进入该表。该表将具有自动生成的ID以及唯一的用户ID和其他用户过去的信息。
一个用户可以在这个表中的多个行,但仅有一行在现实Users
表。
编辑:如果我是你,我会写一个存储过程,做这些事情都使得它更易于管理,如果事情的变化。
您可以包含像这样
`yourTableID, field, value, date`
表和一个触发更新此。你写一个update
触发器,如果它改变,就会添加旧值。请查看at the manual here以了解更多关于触发器的信息。
如果你不想使用触发器,你显然可以在你的逻辑中做同样的事情:只需用旧值更新历史表。但这需要一些技巧来找出如果你需要更新它,但没有什么复杂的。
为了便于检索发生了什么事情,您可能需要添加诸如“oldvalue”和“newvalue”之类的东西,但后者并不是真的需要,因为它可能在下一次更新中为“旧”值,或者它是当前值。
添加其他字段名称版本 和使用,而不是更新
あの答えのとうりに,やってない。 UPDATE table name
组插入物column
= column
+'新值'其中condition
您必须在同一个表中保留多个记录,以某种方式告诉当前“活动”记录是什么,或者您可以复制旧的记录表数据到。 – 2012-07-31 16:30:04