У меня есть две колонки в таблице 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.
Как решить эту проблему?
Спасибо!
Ты скучаешь :
в 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
Индекс, старая строка удаляется перед вставкой новой строки.
Это может быть решением вашей проблемы. В противном случае сделайте выбор, если идентификатор существует, сделайте обновление, в противном случае вставку.