【发布时间】:2018-02-05 00:01:14
【问题描述】:
我想更新一条记录(如果存在)或创建一条新记录(如果它尚不存在),但不知何故它抛出了一个错误,我不知道为什么..
我想更新客户的状态(如果存在)或创建新客户(如果不存在)。
我的查询:
$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。
谁能帮帮我:)?非常感谢!
【问题讨论】:
-
也许我错了,但我认为 SELECT 确实返回列并且不执行任何 INSERT、UPDATE 或 DELETE 查询。但是,对于 MySQL,您可以使用 REPLACE 关键字来解决您的问题。但请记住,该解决方案仅在 mySQL 环境中可用(如果您更改 RDBMS,将无法正常工作)。
-
将数字设为主键,然后使用
insert into ... on duplicate update。 -
除了
$sqlvar..PHP和if-statement在哪里?
标签: php mysql if-statement exists