2017-07-29 45 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

相关问题