Какой правильный синтаксис для ON DUPLICATE KEY UPDATE? - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь использовать ON DUPLICATE KEY UPDATE в PHP. Я действительно не уверен, что правильный синтаксис. Я использую 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 версии сервера, для правильного использования синтаксиса около 'WHERE productID =' 1 '' в строке 1 ".

1 Ответ

0 голосов
/ 16 апреля 2020

Вы не нуждаетесь в предложении 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();
...