如何将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你的目标正确,你要保持你的更改记录/元组实例的日志踪迹。
要做到这一点的一种方法是在更新触发器中创建新记录,表架构应仅包含原始表的主键作为外键的日志记录。
希望这有助于!乐意进一步帮助