php
  • sql
  • sql-update
  • exists
  • sql-insert
  • 2013-10-25 48 views 0 likes 
    0

    我想要一個系統,檢查它是否存在,如果它然後覆蓋,如果沒有,然後插入。我在這段代碼中有一個錯誤,但在我的生活中我看不到它。我試過了這兩種不同的方式,都沒有工作。SQL如果存在覆蓋錯誤

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

    OR

    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"); 
    
    +0

    什麼[錯誤](http://www.php.net/mysqli_error)消息你會得到? – kero

    回答

    1

    你應該設置 「名稱」 列主鍵,然後使用語法,如:

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

    0

    試試這個,或者你可能需要調整+「」和「」+我

    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]+"'"); 
    
    +0

    這不是我試圖用字符串替換所有的PHP並直接通過服務器運行代碼的問題,它仍然返回錯誤。 – bjm904

    相關問題