How can I fetch the last row I inserted using DBI?

Alan Haggai Alavi picture Alan Haggai Alavi · Dec 15, 2009 · Viewed 30.1k times · Source

How can I fetch the last row that was inserted using DBI (DBD::mysql)?

Code sample:

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

How can I get access to the data that was inserted by the above prepare statement? I need to get the primary ID (AUTOINCREMENT) value.

UPDATE:

From DBD::mysql documentation:

An alternative way for accessing this attribute is via $dbh->{'mysql_insertid'}.

Thank you Manni and n0rd for your answers. :-)

Answer

innaM picture innaM · Dec 15, 2009

This is a property of the statement handle. You should be able to access the ID like that:

$sth->{mysql_insertid}