Страницы

Поиск по вопросам

воскресенье, 1 декабря 2019 г.

Какой id вернёт lastInsertId() из PDO?

#php #mysql #pdo


Использую PHP и MySQL. Насколько я понял, lastInsertId() возвращает id последнего
добавленного элемента.

Но я не понимаю, это будет id последнего, добавленного мною элемента, или это id
вообще последнего добавленного элемента (возможно другим пользователем)? И как указать
этому методу нужную таблицу.

То есть, если я сделаю INSERT в таблицу, а потом вызову lastInsertId(), то гарантируется,
что получу id именно этого INSERT? Или если другой пользователь успеет сделать свой
INSERT в промежутке, то я могу получить его id вместо своего?
    


Ответы

Ответ 1



Вернуть id последнего добавленного тобою элемента - единственное предназначение этой функции. Если бы она этого не делала, то попросту не имела бы смысла. Для mysql эта функция возвращает результат функции LAST_INSERT_ID(), про которую сказано, что значение возвращается для текущего соединения. Поэтому бояться этой функции не надо. Никакую "таблицу" при работе с mysql указывать не надо.

Ответ 2



Из документации: PDO::lastInsertId — Возвращает ID последней вставленной строки или последовательное значение PDO::lastInsertId ([ string $name = NULL ] ) Если 'name' не задан, PDO::lastInsertId() вернет строку представляющую ID последней добавленной в базу записи. Если 'name' задан, PDO::lastInsertId() вернет строку представляющую последнее значение, полученное от этого объекта. Если PDO драйвер не поддерживает эту возможность, PDO::lastInsertId() запишет IM001 в SQLSTATE. Таким образом получается, что если Вы хотите гарантировано получить id добавленной Вами записи, укажите имя объекта (таблицу). В этом случе Вы получите созданный именно Вами id.

Комментариев нет:

Отправить комментарий