2015-02-08 120 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,進行更新,否則進行插入。

相關問題