【问题标题】:What is the correct syntax for ON DUPLICATE KEY UPDATE?ON DUPLICATE KEY UPDATE 的正确语法是什么?
【发布时间】:2020-07-30 00:28:31
【问题描述】:

我正在尝试在 PHP 中使用 ON DUPLICATE KEY UPDATE。我真的不确定正确的语法是什么。我正在使用 MySQL 8.0.19

我有,

$sql = "INSERT INTO cart (title, price, productID, quantity) VALUES ('$title', '$price', '$productID', '$quantity') ON DUPLICATE KEY UPDATE quantity WHERE productID='$productID'";

数量是自动递增的,productID 是唯一键。如果 productID 已经存在,我希望增加数量。

我得到了错误,

“您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'WHERE productID='1'' 附近使用正确的语法”。

【问题讨论】:

标签: php mysql sql-insert auto-increment on-duplicate-key


【解决方案1】:

您不需要 where 子句,因为它会根据重复键进行更新,并且您必须分配相同的值,增量为 $quantity

$stmt = $conn->prepare("
  INSERT INTO cart (title, price, productID, quantity)
  VALUES (?, ?, ?, ?)
  ON DUPLICATE KEY UPDATE quantity = quantity + ?;
");
$stmt->bind_param($title, $price, $productID, $quantity, $quantity);
$stmt->execute();

【讨论】:

  • 您可能希望将其增加$quantity,而不是1。另外,使用准备好的语句,不要引用数字。
  • @Sammitch 是的,我同意这两点。我只是想说明 INSERT/ON DUPLICATE 的正确用法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-06
  • 1970-01-01
  • 2017-06-29
  • 2014-10-18
  • 1970-01-01
  • 2011-05-16
  • 1970-01-01
相关资源
最近更新 更多