【发布时间】:2017-07-14 13:31:44
【问题描述】:
我的 mysqli INSERT 代码有一些问题。 我真的不知道如何处理重复项,但我在那里阅读了很多帖子,并试图让它工作,但是当我使用相同的变量执行此代码时,行数会增加。您能帮我修复此代码或找到另一种检查重复项的方法吗?
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
if ($stmt = $conn->prepare(
"INSERT INTO matka (jmeno, prijmeni, bydliste, telefon, email)
VALUES (?,?,?,?,?)
ON DUPLICATE KEY UPDATE
jmeno = VALUES(jmeno),
prijmeni = VALUES(prijmeni),
bydliste = VALUES(bydliste),
telefon = VALUES(telefon),
email = VALUES(email)" )) {
$stmt->bind_param("sssss", $jmeno_matky, $prijmeni_matky, $bydliste_matky, $telefon_matky, $email_matky);
$stmt->execute();
printf("%d Row inserted.\n", $stmt->affected_rows);
$stmt->close();
$id_matky = $conn->insert_id;
$conn->close();
}
【问题讨论】:
-
我以前从未见过
prijmeni = VALUES()语法,这行得通吗?此外,如果只是更新到相同的数据,我会忽略,insert ignore。 -
我在那里:stackoverflow.com/questions/22699598/… 他的代码看起来和我的相似,所以我试了一下。然后我应该使用而不是 INSERT INTO 表名 (...) - INSERT IGNORE 表名 (..) 吗??
-
insert ignore只是忽略了您在重复尝试时遇到的错误。如果您没有唯一性,但不会引发错误。在那里做一些独特的事情,这样你就知道什么时候不应该发生重复。