插入MySQL“重复密钥更新”语法错误

时间:2018-06-08 15:31:50

标签: php mysql sql syntax-error sql-insert

$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 webform向MySQL数据库插入新项目。如果我插入一个重复的行,我会将结果更新为错误消息。这是我的代码。它一直给我一个语法错误。

  

错误:无法执行您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以便在第3行“无效的优惠券代码[错误号码:已存在]”附近使用正确的语法

1 个答案:

答案 0 :(得分:2)

您正在使用字符串文字更新列 - 丢失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注入攻击。你应该考虑改为Prepared Statements