如何使用DBI(DBD::mysql)获取插入的最后一行?
代码示例:
my $sth = $dbh->prepare('INSERT INTO a ( x, y, z ) VALUES ( ?, ?, ? )');
$sth->execute( $x, $y, $z );
如何访问上述prepare
语句插入的数据?我需要获取主ID(AUTOINCREMENT
)值。
更新
来自DBD::mysql文档:
访问此方法的另一种方法 属性是通过
$dbh->{'mysql_insertid'}
。
答案 0 :(得分:30)
这是语句句柄的属性。您应该能够像这样访问ID:
$sth->{mysql_insertid}
答案 1 :(得分:27)
数据库不可知的方法是使用DBI的last_insert_id
方法。此方法有助于减少对特定数据库的依赖性:
$ dbh-> LAST_INSERT_ID
$rv = $dbh->last_insert_id($catalog, $schema, $table, $field);
返回一个值'标识'刚插入的行,如果可能的话。通常,这是由数据库服务器分配给具有auto_increment或serial类型的列的值。如果驱动程序不支持该方法或者无法确定该值,则返回undef。
答案 2 :(得分:6)
SELECT LAST_INSERT_ID()
query也会返回您想要的内容。