如果mysql表中不存在user_id,如何插入新数据


How to insert new data if user_id does not exist in mysql table

mysql表map 1中有两列。第一列的名称是json,第二列的名称为user_id现在,如果mysql表中不存在user_id,我需要将数据插入新行,但如果excist,我只需要更新json列,其中user_id=user_id。。。

我尝试:

     try {        
                $STH = $db->prepare("INSERT INTO map (user_id, json)
VALUES (:2,:1)
on duplicate key update json=values(json)");

                $STH->bindParam(':1', $_POST['mapData']);
                $STH->bindParam(':2', $user_id);

一些想法?我使用php-pdo。

如何解决这个问题?

谢谢!

您在on duplicate key update json=values(:json)");中错过了:,所以尝试如下:

     try {        
                $STH = $db->prepare("INSERT INTO map (user_id, json)
VALUES (:user_id,:json)
on duplicate key update json=values(:json)");
                $STH->bindParam(':json', $_POST['mapData']);
                $STH->bindParam(':user_id', $user_id);

此外,您的问题涉及:此处

只需看看MySQLs REPLACE命令。引用MySQL手册:

REPLACE的工作方式与INSERT完全相同,只是如果表与PRIMARY KEY或UNIQUE的新行具有相同的值索引,则在插入新行之前先删除新行。

这可能是解决你问题的办法。否则,进行选择,如果id存在,则进行更新,否则进行插入。