0

存在するかどうかをチェックし、存在する場合は上書きしてから挿入するシステムを作ろうとしています。このコードにはエラーがありますが、一生見ることはできません。私はこの2つの異なる方法を試しましたが、どちらもうまくいきません。

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

「name」列に主キーを設定し、次のような構文を使用する必要があります。

INSERT INTO saves (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 に答える