SQL更新(如果存在),插入(如果不存在)不起作用

时间:2017-08-27 15:53:06

标签: php mysql if-statement exists

我想更新一条记录,如果它存在或者创建一条新记录,如果它还不存在但不知何故它会抛出一个错误而我找不到原因......

我希望更新客户的状态(如果不存在)或创建新客户(如果不存在)。

我的疑问:

$sql = "SELECT CASE WHEN EXISTS ( SELECT * FROM sms WHERE number = '123456789' AND customer_id = '1' ) THEN UPDATE sms SET stat = '1' ELSE INSERT INTO sms (number, customer_id, stat) values ('+32485386902', '1', '1') END"

抛出错误:

  

[Err] 1064 - 您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以获得正确的语法   在第1行UPDATE sms SET stat = '1' ELSE INSERT INTO sms (number, customer_id, stat) value附近使用

但是,如果我更改更新并插入1和2,则显示1(如果存在),如果不存在,则显示2。

任何人都可以帮助我:)非常感谢!

2 个答案:

答案 0 :(得分:1)

向customer_id添加第二个密钥使其正常工作:

$ sqlsms =“INSERT INTO sms(number,customer_id,stat)VALUES('$ phone','$ compID','$ smsPromo')ON DUPLICATE KEY UPDATE stat ='$ smsPromo'”;

答案 1 :(得分:0)

在SELECT查询中,您始终必须具有FROM子句。我建议你先写一个SELECT查询来知道记录是否存在,然后如果记录不存在你可以运行INSERT else UPDATE。你不能在subquerys中使用SELECT * FROM sms,这是错误的六分之一。