У меня есть следующий код:
$put_tag_rq = $DBH->prepare( "INSERT INTO `tags`
SET
`name` = :name
ON DUPLICATE KEY UPDATE
`id` = `id`
" );
$put_tag_rq->execute( array(
'name' => $tag,
) );
$tag_id = $DBH->lastInsertId();
echo "***********Last insert ID = $tag_id<br>";
Обратите внимание, что name
также является ключом вкладки.
Этот код работает нормально, если вставка name
тег еще не представлен в таблице. Но lastInsertId () возвращает 0, если name
уже здесь.
Конечно, я мог сделать два запроса: сначала проверить, name
тег уже представлен на вкладке (и получить его идентификатор) и второй для вставки name
уже представлен на вкладке.
Но я думаю, что это должно быть проще. Не так ли?
Это MySQL, который вы ищете:
http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
И больше информации о том, как это сделать в php:
PHP MYSQL ОБНОВЛЕНИЕ, если существует, или ВСТАВИТЬ, если нет?
Других решений пока нет …