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

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

我在 mysql table map 中有两列 1. 第一列的名称为 json,第二列的名称为 user_id 现在,如果 user_id 不存在 mysql table,我需要将数据插入新行,但如果存在,我只需要更新 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。

如何解决这个问题?

谢谢!

看看 MySQL 的 REPLACE 命令。 引用自 MySQL 手册:

REPLACE works exactly like INSERT, except that if an old row in the table has the same value as a new row for a PRIMARY KEY or a UNIQUE index, the old row is deleted before the new row is inserted.

这可能是您问题的解决方案。否则做一个select,如果id存在,做一个update,否则做一个insert.

您在 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);

此外,您的问题与: Here