2017-07-29 75 views
0
if (isset($_POST["sendComments"])) { 
    $whichProjectToSave= mysqli_real_escape_string($db5, $_POST['whichProjectToSave']); 
    $commentsToPHP= mysqli_real_escape_string($db5, $_POST['commentsToPHP']); 
    $objectName= mysqli_real_escape_string($db5, $_POST['objectName']); 
    $sql="INSERT INTO objectsCommentsTable (objectsCommentsText,projectName,objectName) VALUES('$commentsToPHP','$whichProjectToSave','$objectName')"; 
    // $sql="UPDATE objectsCommentsTable SET objectsCommentsText ='$commentsToPHP' WHERE projectName= '$whichProjectToSave' AND objectName = '$objectName' "; 
    mysqli_query($db5,$sql); 
            } 

如果數據存在,我必須更新。但我只知道如何使用上面的方法。 其實我只能在表中插入數據,然後通過更改代碼進行更新。但我想用下面的代碼中的東西。它如何執行?如何更新數據庫表中是否存在數據

IF EXISTS (SELECT objectsCommentsText FROM objectsCommentsTable WHERE objectName='$objectName' AND projectName = '$projectName') 
    UPDATE objectsCommentsTable 
    SET objectsCommentsText ='$commentsToPHP' 
    WHERE projectName= '$whichProjectToSave' AND objectName = '$objectName' 
ELSE 
    INSERT INTO objectsCommentsTable (objectsCommentsText,projectName,objectName) 
    VALUES('$commentsToPHP','$whichProjectToSave','$objectName') 
+0

之前問的問題,請搜索一下:https://stackoverflow.com/questions/15383852/sql-if-exists-update -else-insert-into – aidinMC

回答

4

首先,添加唯一索引:

ALTER TABLE objectsCommentsTable ADD UNIQUE project_object_unique (projectName, objectName); 

這將防止同一PROJECTNAME對象名添加行,並ON DUPLICATE工作。

然後,您可以編輯您的查詢使用對重複

INSERT INTO objectsCommentsTable 
(objectsCommentsText, projectName, objectName) VALUES ('$commentsToPHP','$whichProjectToSave', '$objectName') 
ON DUPLICATE KEY 
    UPDATE objectsCommentsText='$commentsToPHP' 
+0

好吧,它的工作原理。下一個正確的路要走嗎? mysqli_query($ DB5,$ SQL); mysqli_query($ db5,$ sql2); 「$ sql」用於ALERT TABLE,「$ sql2」用於INSERT INTO –

+0

@ivangolubar否,運行$ sql一次。它會使桌子永久保持獨特 –

+0

這是我無法理解的一點。如何將所有內容放在一起「$ sql =」? –

1

,你必須使用這種方法INSERT ... ON DUPLICATE KEY UPDATE Syntax

相關問題