mysql_insert_id

直近のクエリで生成された ID を得る

警告

この拡張モジュールは PHP 5.5.0 で非推奨になり、PHP 7.0.0 で削除されました。 MySQLi あるいは PDO_MySQL を使うべきです。詳細な情報は MySQL: API の選択 を参照ください。 この関数の代替として、これらが使えます。

  • mysqli_insert_id
  • PDO::lastInsertId

説明

int mysql_insert_id(resource $link_identifier = NULL)

直近のクエリ (通常は INSERT) により AUTO_INCREMENT カラム用に生成された ID を取得します。

パラメータ

link_identifier

MySQL 接続。指定されない場合、mysql_connect により直近にオープンされたリンクが指定されたと仮定されます。そのようなリンクがない場合、引数を指定せずに mysql_connect がコールした時と同様にリンクを確立します。リンクが見付からない、または、確立できない場合、E_WARNING レベルのエラーが生成されます。

戻り値

直近のクエリにより AUTO_INCREMENT カラム用に生成された ID を返します。直近のクエリが AUTO_INCREMENT な値を生成しなかった 場合に 0、MySQL 接続が確立されていなかった 場合に false を返します。

例1 mysql_insert_id の例

<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
mysql_select_db('mydb');

mysql_query("INSERT INTO mytable (product) values ('kossu')");
printf("最後に挿入されたレコードの ID は、%d\n", mysql_insert_id());
?>

注意

警告

mysql_insert_id は、MySQL C API 関数 mysql_insert_id() の戻り値の型を long 型(PHP では int と呼ばれる) に変換します。 AUTO_INCREMENT カラムが BIGINT 型 (64 ビット) である場合、 変換結果は不正確になります。 かわりに、MySQL の SQL 関数 LAST_INSERT_ID() を SQL 内で使いましょう。 PHP の integer 型の最大値に関する詳細な説明は、 integer のドキュメントをごらんください。

注意:

mysql_insert_id は直近のクエリに対して働くので、 値を生成したクエリの直後に mysql_insert_id をコールすることを忘れないようにしてください。

注意:

MySQL の SQL 関数 LAST_INSERT_ID() の値には、 常に直近の AUTO_INCREMENT の値が含まれており、クエリの間では リセットされません。

参考

  • mysql_query
  • mysql_info