2011-04-02 109 views
1
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; 
} 

此腳本執行行更新後,但舊數據刪除。如何更新行,但保留舊數據?php mysql用戶信息更新

回答

0

您正在使用UPDATE命令。正如你所看到的,這確實修改了與你的WHERE條款匹配的行。

如果你想保持以前$modcomment_emails的名單,那麼你就需要使用到INSERT一些表,然後確保你選擇最近的記錄了,當你做你的SELECT輸出數據。您可以添加一列以將插入日期保留爲ORDER BY

0

如果您需要保留舊數據,您必須將副本移動到存檔表中,方法是發出「更新」命令以覆蓋存在的所有內容。示例

如果我有一個表,其中用戶名是「Bugfinder」,現在我將用戶名更改爲「Bug」,因爲它被覆蓋,所以不會提及Bugfinder。如果我想保持這一點,那麼我需要將行復制到歸檔表中,可能需要更改日期/時間,因此我可以回顧歷史記錄中的變化。

0

是 - 如果要插入新行使用INSERT如果要更新使用UPDATE。同樣的解決方案是創建歷史記錄表,當您將需要的舊日期與發生變化的時間放在一起時