PHP MySQL INSERT терпит неудачу из-за уникального ограничения - PullRequest
1 голос
/ 03 мая 2010

При вставке я ловлю уникальное ограничение mysql_errno () 1062.

Это работает нормально, но я хочу найти существующую строку, чтобы восстановить или изменить ее.

Есть ли способ получить идентификатор строки при ошибке вставки? Я попытался mysql_insert_id (), но понял, что будет возвращать только строку, которую я вставляю (или не удалось вставить), поэтому я получаю 0.

Нет ли другого выбора, кроме как выпустить еще один запрос mysql_query и просто выполнить выборку дублирующегося значения?

Я просто хочу убедиться, что нет лучшего, более быстрого и экономичного способа сделать это.

Ответы [ 2 ]

2 голосов
/ 03 мая 2010

Если вы пытаетесь вставить строку, если новые или обновляете существующие значения, тогда REPLACE INTO - это то, что вам нужно. Также рассмотрим INSERT ... ON DUPLICATE KEY UPDATE Синтаксис , если существуют ограничения, так как REPLACE INTO удалит, а затем INSERT.

0 голосов
/ 03 мая 2010

Вам необходимо проверить таблицу на наличие «уникальных» ключей (SHOW CREATE TABLE перечислит их все), а затем запросить у таблицы соответствующие значения в запросе вставки, который вы пытались выполнить. Поэтому, если вы вставляете поля A, B, C, D и B, C с уникальным ключом, то:

SELECT id, B, C FROM table WHERE B=$B and C=$C;
...