Могу ли я получить идентификатор INSERT / UPDATE одним запросом?

У меня есть следующий код:

$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 уже представлен на вкладке.

Но я думаю, что это должно быть проще. Не так ли?

1

Решение

Это MySQL, который вы ищете:
http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

И больше информации о том, как это сделать в php:
PHP MYSQL ОБНОВЛЕНИЕ, если существует, или ВСТАВИТЬ, если нет?

1

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

Других решений пока нет …

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