如何获取使用DBI插入的最后一行?

Ala*_*avi 34 perl dbi

如何获取使用DBI(DBD :: mysql)插入的最后一行?

代码示例:

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

如何访问上述prepare语句插入的数据?我需要获取主ID(AUTOINCREMENT)值.

更新:

来自DBD :: mysql文档:

访问此属性的另一种方法是via $dbh->{'mysql_insertid'}.

感谢Mannin0rd的回答.:-)

inn*_*naM 31

这是语句句柄的属性.您应该能够像这样访问ID:

$sth->{mysql_insertid}
Run Code Online (Sandbox Code Playgroud)

  • `$ dbh - > {mysql_insertid}`返回相同的内容. (11认同)

Gra*_*iln 28

数据库不可知的方法是使用DBIlast_insert_id方法.此方法有助于减少对特定数据库的依赖性:

$ dbh-> LAST_INSERT_ID

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

如果可能,返回"标识"刚刚插入的行的值.通常,这是由数据库服务器分配给具有auto_increment或serial类型的列的值.如果驱动程序不支持该方法或无法确定该值,则返回undef.


n0r*_*0rd 6

SELECT LAST_INSERT_ID() 查询也将返回您想要的内容.