Как вставить новые данные, если user_id не существует в таблице MySQL

У меня есть две колонки в таблице 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

Решение

Ты скучаешь : в 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);

Кроме того, ваш вопрос связан с:
Вот

0

Другие решения

Просто взгляните на команду MySQLs REPLACE.
Цитировать из руководства MySQL:

REPLACE работает точно так же, как INSERT, за исключением того, что если старая строка в
таблица имеет то же значение, что и новая строка для PRIMARY KEY или UNIQUE
Индекс, старая строка удаляется перед вставкой новой строки.

Это может быть решением вашей проблемы. В противном случае сделайте выбор, если идентификатор существует, сделайте обновление, в противном случае вставку.

0

По вопросам рекламы [email protected]