35

DBIDBD :: 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 に答える