如果存在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,则编辑重复的主要内容,如果未能解决你的问题,请参考以下文章

PHP:如果不存在则设置的简短语法并递增[重复]

如果存在则如何更新,否则在php mysql中插入[重复]

如果 PHP 中不存在,则复制文件并创建目录 [重复]

数据库:如果存在则“更新”如果不存在则插入 [重复]

将 JSON 保存到文件,如果存在则更改输出

PHP - MYSQL - 如果用户名存在则检查特定用户名的密码[重复]