Я нашел несколько ответов для этого, используя только mySQL, но я надеялся, что кто-то сможет показать мне способ получить идентификатор последней вставленной или обновленной строки mysql DB при использовании PHP для обработки вставок/обновлений.Получение mysql_insert_id() при использовании ON DUPLICATE KEY UPDATE с PHP
В настоящее время у меня есть что-то вроде этого, где колонка3 является уникальным ключом, и есть также колонка идентификатор, который приведен autoincremented первичный ключ:
$query ="INSERT INTO TABLE (column1, column2, column3) VALUES (value1, value2, value3) ON DUPLICATE KEY UPDATE SET column1=value1, column2=value2, column3=value3";
mysql_query($query);
$my_id = mysql_insert_id();
$ my_id правильно на INSERT, но неправильно, когда это обновление row (ON DUPLICATE KEY UPDATE).
Я видел несколько постов с людьми, советуя использовать что-то вроде
INSERT INTO table (a) VALUES (0) ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id)
, чтобы получить действительное значение идентификатора, когда дублированием KEY является invoked--, но это будет возвращение, что действительное удостоверение личности с PHP mysql_insert_id()
функционировать?
У меня нет ответа. Но решение выглядит умным. Почему бы вам не попробовать? Я бы подумал, что не должно быть сложно создать тестовый пример, который дал бы окончательный ответ. PS: Не поймите меня неправильно; Я могу понять, что вы хотите успокоить. Возможно, я тоже. Но сначала я попробую. :) –
Мне было любопытно, как это может работать, но я нашел это в руководстве по MySQL: * Если expr задано как аргумент LAST_INSERT_ID(), значение аргумента возвращается функцией и запоминается как следующее значение для должен быть возвращен LAST_INSERT_ID() *. –
@Alexandre: да, и предположим, что 'mysql_insert_id()' является просто прокси-сервером 'LAST \ _INSERT \ _ID()' Я бы подумал, что это должно работать должным образом. –