mysql表map
1中有两列。第一列的名称是json
,第二列的名称为user_id
现在,如果mysql表中不存在user_id,我需要将数据插入新行,但如果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。
如何解决这个问题?
谢谢!
您在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);
此外,您的问题涉及:此处
只需看看MySQLs REPLACE命令。引用MySQL手册:
REPLACE的工作方式与INSERT完全相同,只是如果表与PRIMARY KEY或UNIQUE的新行具有相同的值索引,则在插入新行之前先删除新行。
这可能是解决你问题的办法。否则,进行选择,如果id存在,则进行更新,否则进行插入。