35

如何获取使用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'}.

谢谢Mannin0rd的回答。:-)

4

3 回答 3

35

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

$sth->{mysql_insertid}
于 2009-12-15T11:48:14.340 回答
32

与数据库无关的方法是使用DBIlast_insert_id方法。这种方法有助于减少对特定数据库的依赖:

$dbh->last_insert_id

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

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

于 2014-09-23T14:04:13.600 回答
6

SELECT LAST_INSERT_ID() 查询也会返回你想要的。

于 2009-12-15T11:51:36.620 回答