我在使用重复键时遇到了一些麻烦。我将从我的代码开始。
// Prepare to select all liabilities
$stmt = $con->query("TRUNCATE TABLE `Students`");
$stmt = $con->prepare("SELECT student_no, legal_first_name, legal_surname, oen_number FROM csv_students");
$stmt->execute();
$stmt->bind_result($sid, $fname, $lname, $oen);
$stmt->store_result();
$updt = $con->prepare("INSERT INTO Students (Student_ID, Last_Name, First_Name, OEN) VALUES (?, ?, ?, ?) ON DUPLICATE KEY DELETE FROM `Students` WHERE OEN = ?") or die(mysql_error($con)); // Prepare to insert a new liability
$updt->bind_param("ssss", $sid, $lname, $fname, $oen, $oen) or die("Not sending var"); // Bind variables to the result of the query
while($stmt->fetch()){
$updt->execute() or die(mysqli_error($con)); // Execute the query
}
$updt->close() or die("Not closing after send"); // Close the statement
$stmt->free_result();
$stmt->close() or die("Not closing after collection");
所以我试图从第一个表中获取变量并将它们插入到第二个表中,但是每个学生大约有四个条目(每个班级一个)。基本上,我将它们全部获取,然后尝试说“在重复键上,删除具有相同 oen 编号的最后一个条目。它给了我错误“警告:mysql_error() 期望参数 1 是资源,给定对象在第 23 行的 /var/www/ride/admin_settings/csv/students/update.php 中“在我们看到 ON DUPLICATE KEY 代码的那一行。有人知道发生了什么吗?