php mysql用户信息更新

时间:2011-04-02 11:37:36

标签: php mysql

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;
 }

此脚本执行后行更新,但旧数据已删除。如何更新行,但保留旧数据?

3 个答案:

答案 0 :(得分:0)

如果您需要保留旧数据,则必须将副本移动到存档表中,通过发出“更新”命令,它会覆盖那里的所有内容。实施例

如果我有一个用户名为“Bugfinder”的表,现在,我将用户名更改为“Bug”,因为它被覆盖,所以不会引用Bugfinder。如果我想保留它,我需要将该行复制到一个存档表中,可能需要更改日期/时间,所以我可以回顾过去的历史记录。

答案 1 :(得分:0)

是 - 如果要更新使用INSERT,是否要插入新行UPDATE。另外解决方案是创建历史表,当您将所需的旧日期与更改发生的时间一起删除时

答案 2 :(得分:0)

您正在使用UPDATE命令。正如您所观察到的,这样做会修改与您的WHERE子句匹配的行。

如果您想保留之前$modcomment_emails的列表,那么您需要在某个表格中使用INSERT,然后确保在选择最近的记录时执行SELECT输出数据。您可以添加一列以将插入日期保留为ORDER BY