gpt4 book ai didi

php - 如果存在 MySQL

转载 作者:太空宇宙 更新时间:2023-11-03 10:48:16 24 4
gpt4 key购买 nike

我有 mssql 背景,所以很难适应 MySQL。

我有一个名为 users_settings 的表。在此表中有三列; uid名称Uid 是一个整数,指的是拥有该设置的用户,name 是设置的名称,value,嗯,你猜对了,就是值。

我要做的是更新这些设置(如果它们已经存在),但如果不存在,则插入一个新行。

我当前的查询是这样的(注意我使用的是准备好的语句):

IF EXISTS (SELECT * FROM users_settings WHERE name = ? AND uid = ?) THEN
UPDATE users_settings SET value = ? WHERE name = ? AND uid = ?;
ELSE
INSERT INTO users_settings (uid, name, value) VALUES (?, ?, ?);
END IF;

我遇到的问题是,当我尝试准备语句时,它返回 false,因此表明语法不正确。查了一下,好像是 SQL 语法错误。

是否有人能够指出我这里可能发生的事情的相对方向,以及我可能在哪里语法不正确?

最佳答案

在 MySQL 中,if 作为语句只能用于编程 block ——存储过程、函数和触发器(不要与作为语句的 if 混淆)函数,几乎可以在任何 SQL 语句中使用)。

您可以在 MySQL 中使用一条语句 insert 来做您想做的事。 . .关于重复 key 更新。为此,您需要在 nameuid 上建立唯一索引:

create unique index users_settings_name_uid on users_settings(name, uid);

然后:

INSERT INTO users_settings (uid, name, value)
VALUES (?, ?, ?)
ON DUPLICATE KEY UPDATE value = VALUES(value);

关于php - 如果存在 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28235289/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com