(используя вставку MySQL) не может найти идентификатор записи, когда она существует - PullRequest
2 голосов
/ 12 января 2012

Используя PHP, я вставляю запись в базу данных MySQL. Если запись новая, я получаю insert_id, но если она уже существует, я не могу получить идентификатор с помощью одного запроса.

Оба следующих запроса позволяют мне добавить запись или пропустить, если она уже существует:

INSERT INTO `emails` (`email`) VALUE ('abc@example.com') ON DUPLICATE KEY UPDATE `id`=`id`

INSERT IGNORE INTO `emails` (`email`) VALUE ('abc@example.com')

Как правильно получить правильный результат в обоих случаях?

РЕДАКТИРОВАТЬ: Вот мой синтаксис таблицы:

CREATE TABLE `emails` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `email` varchar(255) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`),
  UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

1 Ответ

3 голосов
/ 12 января 2012

Я подозреваю, что это значение LAST_INSERT_ID, которое заканчивается в insert_id.

Цитата из руководства MySQL;

Чтобы LAST_INSERT_ID () имел смысл для обновлений, вставьте строки следующим образом:

INSERT INTO table (a,b,c) VALUES (1,2,3)
  ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), c=3;

Источник: http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...