Обычно, задача узнать последний добавленный идентификатор (id) возникает после запроса вставки данных INSERT. Причем, поле, которое будет содержать это значение, назначается автоматически базой данных.
Автоматическое назначение id в базе данных используется очень часто. При этом сразу решается проблема уникальности идентификатора – он не будет дублироваться, и не нужно реализовывать специальный код для его генерации. Тем более что любая СУБД обязательно включает в себя такой функционал.
Стоит уточнить, что иногда есть необходимость генерировать идентификатор по другим правилам. Такое делается либо для удобства дальнейшей работы – например, включение в id значения, которые будет иметь какой-то смысл – текущая дата или тип записи. Либо, наоборот, идентификатор формируется набором случайных символов для обеспечения безопасности. В этом случае, сложно будет его случайно указать или угадать.
Для нахождения последнего id, созданного при вставке дынных в MySQL, в PHP используется функция mysql_insert_id. Обязательных параметров у нее нет, поэтому в коде просто присваиваем значение, возвращаемое этой функции в переменную или сразу используем ее в качестве параметра в другой функции.
$last_id = mysql_insert_id(); // запись значения в переменную
my_function(mysql_insert_id()); // указание параметром в другую функцию
В разработке, такой подход наиболее простой и удобный. Но применять его нужно, зная, что эта функция возвращает идентификатор, созданный для любой из таблиц последним. Т.е. может возникнуть ситуация, когда в "один момент времени" в БД будет добавлено две записи. При этом функция mysql_insert_id будет возвращать id записи, добавленной последней.
Кроме того, если между интересующим запросом вставки данных и функцией определения идентификатора будет выполнен другой запрос, не использующий поля с атрибутами AUTO_INCREMENT (поле со счетчиком), то будет возвращено значение 0.
Обычно этой функцией пользуются непосредственно после выполнения запроса на добавление данных, поэтому вероятность описанной ситуации сводится к минимуму. Но если известно, что этот механизм может многократно выполняться в единый момент времени, стоит вспомнить об этой проблеме и проверить насколько корректно все работает.
Функция explode в PHP, описание и примеры
Подключение базы данных MySQL в PHP
Функция isset в PHP, описание и примеры
В комментариях запрещено публиковать рекламные материалы. Все сообщения оправляются на модерацию и будут опубликованы, если не нарушают правил сайта после проверки.