Подтвердить что ты не робот

Как я могу получить последнюю строку, вставленную с помощью DBI?

Как я могу получить последнюю строку, которая была вставлена ​​с помощью DBI (DBD::mysql)?

Пример кода:

my $sth = $dbh->prepare('INSERT INTO a ( x, y, z ) VALUES ( ?, ?, ? )');
$sth->execute( $x, $y, $z );

Как я могу получить доступ к данным, которые были вставлены в вышеуказанный оператор prepare? Мне нужно получить значение первичного идентификатора (AUTOINCREMENT).

UPDATE:

Из DBD::mysql документация:

Альтернативный способ доступа к этому атрибут через $dbh->{'mysql_insertid'}.

Благодарим вас за Manni и n0rd.: -)

4b9b3361

Ответ 1

Это свойство дескриптора оператора. Вы должны иметь доступ к ID:

$sth->{mysql_insertid}

Ответ 2

Агностический подход к базе данных заключается в использовании DBI last_insert_id. Этот подход помогает уменьшить зависимость от конкретной базы данных:

$dbh- > last_insert_id

$rv = $dbh->last_insert_id($catalog, $schema, $table, $field);

Возвращает значение, идентифицирующее только что вставленную строку, если это возможно. Обычно это будет значение, назначенное сервером базы данных для столбца с автоматическим указателем или серийным типом. Возвращает undef, если драйвер не поддерживает метод или не может определить значение.

Ответ 3

SELECT LAST_INSERT_ID() query также вернет то, что вы хотите.