На вставке я улавливаю уникальное ограничение mysql_errno () 1062.
Это отлично работает, но я хочу найти существующую строку, чтобы повторно установить или изменить ее.
Есть ли способ получить идентификатор строки на вставке? Я попробовал mysql_insert_id (), но понял, что вернет только строку, которую я вставляю (или не вставляю), поэтому я получаю 0.
Нет ли опции, кроме как выпустить другой mysql_query и просто выполнить выбор по дублируемому значению?
Я просто хочу убедиться, что нет лучшего, более быстрого и экономичного способа сделать это.
Если вы пытаетесь вставить строку, если новые или обновить существующие значения, то REPLACE INTO – это то, что вам нужно. Также рассмотрите INSERT … ON DUPLICATE KEY UPDATE Синтаксис, если есть ограничения, связанные с REPLACE INTO, будет удаляться, а затем INSERT.
Вам нужно будет проверить таблицу для каких-либо «уникальных» ключей ( SHOW CREATE TABLE
их все), а затем запросит таблицу для связанных значений в запросе вставки, который вы попытались. Поэтому, если вы вставляете поля A, B, C, D и B, C имеют уникальный ключ, то:
SELECT id, B, C FROM table WHERE B=$B and C=$C;