Вставить в MySQL синтаксическую ошибку «при обновлении дублированного ключа» - PullRequest
0 голосов
/ 08 июня 2018
$sql = "INSERT INTO couponentries (itemid, coupon, MSISDN, channel, result) 
       VALUES ('".$itemid."','".$CouponCode."', '".$MSISDN."','".$channel."','".$status."')
       ON DUPLICATE KEY UPDATE couponentries.result = VALUES('Invalid couponcode[ERR: Already exists]')";

Я пытаюсь вставить новый элемент из веб-формы PHP в базу данных MySQL.Если я вставлю дублирующую строку, я обновлю результат до сообщения об ошибке.Вот мой код.Он продолжает выдавать мне синтаксическую ошибку.

ОШИБКА: не удалось выполнить У вас ошибка в синтаксисе SQL;проверьте правильность синтаксиса для руководства, соответствующего версии вашего сервера MySQL, рядом с '' Неверный код купона [ERR: уже существует] ')' в строке 3

1 Ответ

0 голосов
/ 08 июня 2018

Вы используете строковый литерал для обновления столбца - потеряйте values:

$sql = "INSERT INTO couponentries (itemid, coupon, MSISDN, channel, result) 
       VALUES ('".$itemid."','".$CouponCode."', '".$MSISDN."','".$channel."','".$status."')
       ON DUPLICATE KEY UPDATE couponentries.result = 'Invalid couponcode[ERR: Already exists]'";

Обязательное примечание:Подобные конкатенирующие строки делают ваш код уязвимым для атак SQL-инъекций.Вам, вероятно, стоит взглянуть на Подготовленные заявления .

...