如果存在mysqli php,则编辑重复
Posted
技术标签:
【中文标题】如果存在mysqli php,则编辑重复【英文标题】:Edit duplicate if exists mysqli php 【发布时间】: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
。
我在那里:***.com/questions/22699598/… 他的代码看起来和我的相似,所以我试了一下。然后我应该使用而不是 INSERT INTO 表名 (...) - INSERT IGNORE 表名 (..) 吗??
insert ignore
只是忽略了您在重复尝试时遇到的错误。如果您没有唯一性,但不会引发错误。在那里做一些独特的事情,这样你就知道什么时候不应该发生重复。
【参考方案1】:
ON DUPLICATE KEY
依赖于定义的 PRIMARY 或 UNIQUE 键。这意味着在两行中定义键的列不能相同。
例如,如果您在 email
上创建了一个唯一键,如下所示:
CREATE INDEX matka_email ON matka (email)
然后当您尝试插入记录并且电子邮件地址已经存在时,它将更新您查询中在ON DUPLICATE KEY
之后定义的字段
请注意,唯一键可能涉及多个列,如下所示:
CREATE INDEX matka_alldata ON matka (jmeno, prijmeni, bydliste, telefon, email)
查看文档:
https://dev.mysql.com/doc/refman/5.7/en/create-index.html【讨论】:
哦,谢谢,我想我可以用它来检查所有数据是否存在。你知道我应该如何检查这些值是否已经存在吗?这对我有很大帮助。 您可以在所有字段中创建唯一键 - 我将通过示例更新答案以上是关于如果存在mysqli php,则编辑重复的主要内容,如果未能解决你的问题,请参考以下文章