2015-02-08 75 views
0

我有两列到MySQL表map 1.首先列有名字json,第二个有名字user_id 现在,我需要的,如果做的user_id将数据插入到新行不存在到MySQL表,但如果excist我只需要更新json列其中USER_ID = user_ID的...如何插入新的数据,如果USER_ID不MySQL表存在

我尝试:

 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。

如何解决这个问题?

谢谢!

+0

所以你想添加一个新用户吗? – djv 2015-02-08 22:13:06

+0

不是user,user_id ...所以如果存在,我只需要更新该行的json列,其中user_id = user_id ...我在每个表中存储user_id - 因此我知道哪些是数据... – 2015-02-08 22:14:09

+0

但是,如果用户不存在你没有用户ID。我认为这是你的问题。你不想然后插入一个新用户并获取该ID? – djv 2015-02-08 22:15:50

回答

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

+0

嗯,不,不工作 – 2015-02-08 22:43:20

0

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

更换作品酷似INSERT,不同之处在于,如果一个老行的 表具有相同的值PRIMARY KEY或一个UNIQUE 指数新行,旧行在插入新行之前删除。

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

相关问题