Ответ 1
Это свойство дескриптора оператора. Вы должны иметь доступ к ID:
$sth->{mysql_insertid}
Как я могу получить последнюю строку, которая была вставлена с помощью 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.: -)
Это свойство дескриптора оператора. Вы должны иметь доступ к ID:
$sth->{mysql_insertid}
Агностический подход к базе данных заключается в использовании DBI last_insert_id
. Этот подход помогает уменьшить зависимость от конкретной базы данных:
$dbh- > last_insert_id
$rv = $dbh->last_insert_id($catalog, $schema, $table, $field);
Возвращает значение, идентифицирующее только что вставленную строку, если это возможно. Обычно это будет значение, назначенное сервером базы данных для столбца с автоматическим указателем или серийным типом. Возвращает undef, если драйвер не поддерживает метод или не может определить значение.
SELECT LAST_INSERT_ID()
query также вернет то, что вы хотите.