如果 user_id 在 mysql table 中不存在,如何插入新数据
How to insert new data if user_id does not exist in mysql table
我在 mysql table map
中有两列 1. 第一列的名称为 json
,第二列的名称为 user_id
现在,如果 user_id 不存在 mysql table,我需要将数据插入新行,但如果存在,我只需要更新 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。
如何解决这个问题?
谢谢!
看看 MySQL 的 REPLACE 命令。
引用自 MySQL 手册:
REPLACE works exactly like INSERT, except that if an old row in the
table has the same value as a new row for a PRIMARY KEY or a UNIQUE
index, the old row is deleted before the new row is inserted.
这可能是您问题的解决方案。否则做一个select,如果id存在,做一个update,否则做一个insert.
您在 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
我在 mysql table map
中有两列 1. 第一列的名称为 json
,第二列的名称为 user_id
现在,如果 user_id 不存在 mysql table,我需要将数据插入新行,但如果存在,我只需要更新 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。
如何解决这个问题?
谢谢!
看看 MySQL 的 REPLACE 命令。 引用自 MySQL 手册:
REPLACE works exactly like INSERT, except that if an old row in the table has the same value as a new row for a PRIMARY KEY or a UNIQUE index, the old row is deleted before the new row is inserted.
这可能是您问题的解决方案。否则做一个select,如果id存在,做一个update,否则做一个insert.
您在 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