如何将sql数据添加到表中但不覆盖它?

问题描述:

我正在创建一个人们可以添加数据的web应用程序。例如:我有名字和姓氏。我想更新用户的帐户,但是我不想删除该用户的旧数据(old_name,old_lastname,old_email等)。相反,我想保留用户的旧数据,并创建一个新的记录。然后我需要访问它们以显示他们使用的所有旧名称。如何将sql数据添加到表中但不覆盖它?

从我发现我需要添加时间戳,但我找不到示例。如果有人能够向我展示添加到我当前页面的代码,这对我有很大帮助。

一旦我能够添加记录而不是更新它们,我将添加更多的字段。

这是我的帐户页面:

<?php 
    include 'header.php'; 

    session_start(); 

    //kick none users off the page 
    if(isset($_SESSION["UserID"])) { 

    } 
    else { 
     header('Location:login.php'); 
    } 

    //Display the user info 
    $user = $_SESSION[UserID]; 

    $results = $con->query("select * from users where UserID='$user'"); 

    $row = $results->fetch_array(MYSQLI_BOTH); 

    session_start(); 

    $_SESSION["FirstName"] = $row['FirstName']; 
    $_SESSION["LastName"] = $row['LastName']; 
    $_SESSION["Email"] = $row['Email']; 
    $_SESSION["Password"] = $row['Password']; 

    //update user info 
    if(isset($_POST['update'])){ 

     $UpdateFN = $_POST['First_Name']; 
     $UpdateLN = $_POST['Last_Name']; 
     $UpdateEM = $_POST['Email']; 
     $UpdatePW = $_POST['Password']; 

     $StorePassword = password_hash($UpdatePW, PASSWORD_BCRYPT, array('cost' => 10)); 

     $sql = $con->query("UPDATE users SET FirstName = '{$UpdateFN}', LastName = '{$UpdateLN}', Email = '{$UpdateEM}', Password = '{$StorePassword}' where UserID=$user"); 

     header('Location:account.php'); 
    } 

?> 

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <meta charset="utf-8" /> 
     <title></title> 
    </head> 
    <body> 
     <p>Your account</p> 
     <?php echo $_SESSION[UserID]; ?><br /> 
     <a href="logout.php">Logout</a> 



     <form action="" method="post" name="AccountForm" id="AccountForm" > 
      <input type="text" name="First_Name" placeholder="First Name" id="First_Name" required="required" value="<?php echo $_SESSION["FirstName"]?>"><br> 
      <input type="text" name="Last_Name" placeholder="Last Name" id="Last_Name" required="required" value="<?php echo $_SESSION["LastName"]?>"><br> 
      <input type="text" name="Email" placeholder="Email" id="Email" required="required" value="<?php echo $_SESSION["Email"]?>"><br> 
      <input type="password" name="Password" placeholder="Password" id="Password" required="required" value="<?php echo $_SESSION["Password"]?>"><br><br> 
      <input name="update" type="submit" value="Update"> 
     </form> 

    </body> 
</html> 

如果我uderstand你的目标正确,你要保持你的更改记录/元组实例的日志踪迹。

要做到这一点的一种方法是在更新触发器中创建新记录,表架构应仅包含原始表的主键作为外键的日志记录。

希望这有助于!乐意进一步帮助