我有两列进入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。
如何解决这个问题?
谢谢!
答案 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