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

时间:2015-02-08 22:10:26

标签: php mysql pdo insert-update

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

如何解决这个问题?

谢谢!

2 个答案:

答案 0 :(得分:0)

看看MySQLs REPLACE命令。 引自MySQL手册:

  

REPLACE的工作原理与INSERT完全相同,只是如果在一个旧行中   table与PRIMARY KEY或UNIQUE的新行具有相同的值   index,在插入新行之前删除旧行。

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

答案 1 :(得分:0)

您错过了:中的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