【问题标题】:INSERT INTO... ON DUPLICATE KEY UPDATE not updating the duplicate value in PHP and mySQLINSERT INTO... ON DUPLICATE KEY UPDATE 不更新 PHP 和 mySQL 中的重复值
【发布时间】:2019-04-02 11:06:37
【问题描述】:

我正在尝试使用函数INSERT INTO ... ON DUPLICATE KEY 在 mySQL 表中插入一些数据。 如果已经有用户注册了相同的电子邮件,我想更新这些值。

所以我在这个讨论中搜索后实现了下面的代码: link-1link-2等链接...

我也看了说明书link-4

$query=mysqli_query($conn,"INSERT INTO theElisa_signUp (name, email, telephone, user, psw, role, expire_date)
VALUES ('$name', '$email', 'not-set', '$username', '$password', '$role', '$expire_date')
ON DUPLICATE KEY
UPDATE name = '$name', user ='$username', psw = '$password', expire_date = '$expire_date' ");

其实代码可以正确插入新用户。 但是,如果我尝试更新已经存在的用户,它会创建一条新记录。所以我有两个用户注册了同一个电子邮件(如果表中已经有电子邮件,我需要更新用户)

我希望这个问题尊重标准,并且我已经完成了 stackoverflow 中的所有研究,但没有一个答案可以帮助我。 所以请不要将我的问题标记为重复。

附:我实际上是一个网页设计师,编码经验为零,这个项目超出了我的能力范围。但不幸的是,我必须解决这个问题。 谢谢。

【问题讨论】:

  • 使email 列独一无二
  • 桌子的钥匙是什么?
  • 电子邮件列是否唯一?
  • 嗨,所以我可能真的是菜鸟。所以现在我已将电子邮件设置为在我的表中唯一(我也有一个主键为id,但是这个,现在没有必要)。

标签: php mysql sql-update sql-insert


【解决方案1】:

电子邮件列应该是唯一的。

ALTER TABLE `theElisa_signUpADD` UNIQUE (email);

【讨论】:

  • 是的!谢谢,我已经在 mySQL 表中完成了它并且它有效!
【解决方案2】:

您可以使用两个查询here's reference

$query=mysqli_query($conn,"INSERT INTO theElisa_signUp (name, email, telephone, user, psw, role, expire_date) VALUES ('$name', '$email', 'not-set', '$username', '$password', '$role', '$expire_date') ON DUPLICATE KEY UPDATE name = '$name',");
$query=mysqli_query($conn,"UPDATE theElisa_signUp SET user ='$username', psw = '$password', expire_date = '$expire_date' WHERE name = '$name' ");

【讨论】:

  • 为什么要使用 2 个查询?这将更新刚刚插入的行。
  • 否,这将插入来自唯一电子邮件的引用的新数据。就像 alter 命令的工作原理一样
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-29
  • 2017-09-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-30
  • 2016-10-29
  • 1970-01-01
相关资源
最近更新 更多