如果存在 SQL 覆盖错误


SQL IF EXISTS overwrite error

我正在尝试让一个系统检查它是否存在,如果存在,则覆盖,如果不存在,则插入。我在这个代码中有一个错误,但我一生都看不到它。我尝试了两种不同的方法,但都不起作用。

mysqli_query($con,"IF (SELECT COUNT(*) FROM saves
WHERE name='$_POST[name]') > 0
BEGIN
    UPDATE saves SET entity='$_POST[saveEntity]' WHERE name='$_POST[name]'
END
ELSE
BEGIN
    INSERT INTO saves (`name`, `ID`, `entity`)
    VALUES ('$_POST[name]', NULL, '$_POST[saveEntity]')
END");

mysqli_query($con,"IF EXISTS(SELECT * FROM saves WHERE name='$_POST[name]')
BEGIN
    UPDATE saves SET entity='$_POST[saveEntity]' WHERE name='$_POST[name]'
END
ELSE
BEGIN
    INSERT INTO saves (`name`, `ID`, `entity`)
    VALUES ('$_POST[name]', NULL, '$_POST[saveEntity]')
END");

您应该在"name"列上设置主键,然后使用如下语法:

插入到保存中(列 1,列 2,列 3,...)值 (1,2,3,...)
在重复键更新实体="您的值";

试试这个,否则你可能不得不调整+'"和'"+ i

mysqli_query($con,"IF EXISTS(SELECT * FROM saves WHERE name='"+$_POST[name]+"')
BEGIN
    UPDATE saves SET entity='"
+ $_POST[saveEntity]+ "'  WHERE name='"+$_POST[name]+"'
END
ELSE
BEGIN
    INSERT INTO saves (`name`, `ID`, `entity`)
    VALUES ('"+$_POST[name]+"', NULL, '"+$_POST[saveEntity]+"')
END");

但是对于sql,我只会在不存在
的地方插入然后更新它,我不知道这是我的想法

mysqli_query($con,"
INSERT INTO saves (`name`, `ID`, `entity`)
    VALUES ('"+$_POST[name]+"', NULL, '"+$_POST[saveEntity]+"')
where name not in 
(SELECT name FROM saves WHERE name)
go 
    UPDATE saves SET entity='"
+ $_POST[saveEntity]+ "'  WHERE name='"+$_POST[name]+"'");