if ($email != $CURUSER["email"]) {
if (!validemail($email))
bark( _("Klaida! Panašu, kad klaidingai įvedei email adresą!") );
$r = do_mysql_query("SELECT id FROM users WHERE email=" . sqlesc($email)) or sqlerr();
if (mysql_num_rows($r) > 0)
bark( sprintf( _("Toks emailas adresas %s jau naudojamas!"), $email) );
####
$date = date("Y-m-d");
$modcomment_email = "{$date} - E-mail pakeistas, pakeitė: {$CURUSER['username']}";
$modcomment_email = mysql_real_escape_string($modcomment_email);
do_mysql_query("UPDATE users SET modcomment = '$modcomment_email' where id = ".$CURUSER['id']) or sqlerr(__FILE__, __LINE__);
#####
$changedemail = 1;
}
此脚本执行后行更新,但旧数据已删除。如何更新行,但保留旧数据?
答案 0 :(得分:0)
如果您需要保留旧数据,则必须将副本移动到存档表中,通过发出“更新”命令,它会覆盖那里的所有内容。实施例
如果我有一个用户名为“Bugfinder”的表,现在,我将用户名更改为“Bug”,因为它被覆盖,所以不会引用Bugfinder。如果我想保留它,我需要将该行复制到一个存档表中,可能需要更改日期/时间,所以我可以回顾过去的历史记录。
答案 1 :(得分:0)
是 - 如果要更新使用INSERT
,是否要插入新行UPDATE
。另外解决方案是创建历史表,当您将所需的旧日期与更改发生的时间一起删除时
答案 2 :(得分:0)
您正在使用UPDATE
命令。正如您所观察到的,这样做会修改与您的WHERE
子句匹配的行。
如果您想保留之前$modcomment_emails
的列表,那么您需要在某个表格中使用INSERT
,然后确保在选择最近的记录时执行SELECT
输出数据。您可以添加一列以将插入日期保留为ORDER BY
。