0

我在使用重复键时遇到了一些麻烦。我将从我的代码开始。

// 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 代码的那一行。有人知道发生了什么吗?

4

1 回答 1

1

您将 mysql 和 mysqli 混合在一起。

你正在使用

or die(mysql_error($con));

在第 7 行。什么时候应该

or die(mysqli_error($con));

我也注意到你在做什么

"ssss", $sid, $lname, $fname, $oen, $oen

所以你期待 5 个参数,但你只假设 4 个?如果您希望最后是一个数字而不是一个字符串,那么您应该在其中添加广告。

于 2013-05-22T17:42:24.630 回答