0

我正在尝试建立一个系统来检查它是否存在,如果存在则覆盖,如果不存在则插入。我在这段代码中有一个错误,但我一辈子都看不到它。我试过这两种不同的方法,都不管用。

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");
4

2 回答 2

1

您应该在“名称”列上设置主键,然后使用如下语法:

INSERT INTO 保存 (column1,column2,column3,...) VALUES (1,2,3,...)
ON DUPLICATE KEY UPDATE entity='your value';

于 2013-10-25T19:41:55.177 回答
0

试试这个,否则你可能需要调整 +'" 和 '"+ 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]+"'");
于 2013-10-25T19:44:39.087 回答