#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.
Комментариев нет:
Отправить комментарий