mysqli::$insert_id

mysqli_insert_id

直近のクエリの AUTO_INCREMENT カラムで生成した値を返す

説明

オブジェクト指向型

intstring$mysqli->insert_id;

手続き型

intstring mysqli_insert_id(mysqli $mysql)

AUTO_INCREMENT 属性を持つカラムがあるテーブル上での INSERTUPDATE クエリが生成したIDを返します。 INSERT 文が複数の行を変更する場合、 最初に自動生成された値を返します。

MySQL 関数 LAST_INSERT_ID() を使って INSERTUPDATE を実行すると、 mysqli_insert_id が返す値も変更されます。 AUTO_INCREMENT の値を生成するために LAST_INSERT_ID(expr) を使った場合、 生成された AUTO_INCREMENT の値ではなく、 最後の expr の値を返します。

直前のクエリが AUTO_INCREMENT の値を変更しなかった場合は、 0 を返します。 クエリが値を生成した直後に、 mysqli_insert_id をコールする必要があります。

パラメータ

link

手続き型のみ: mysqli_connect あるいは mysqli_init が返す mysqliオブジェクト。

戻り値

直前のクエリで更新された AUTO_INCREMENT フィールドの値を返します。接続での直前のクエリがない場合や クエリが AUTO_INCREMENT の値を更新しなかった場合は ゼロを返します。

現在の接続を使って発行されたクエリだけが、戻り値に影響します。 他の接続やクライアントが発行したクエリからは影響を受けません。

注意:

もし数値が int の最大値をこえた場合、 文字列で結果を返します。

例1 $mysqli->insert_id の例

オブジェクト指向型

<?php

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

$mysqli->query("CREATE TABLE myCity LIKE City");

$query = "INSERT INTO myCity VALUES (NULL, 'Stuttgart', 'DEU', 'Stuttgart', 617000)";
$mysqli->query($query);

printf("New record has ID %d.\n", $mysqli->insert_id);

/* drop table */
$mysqli->query("DROP TABLE myCity");

手続き型

<?php

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

mysqli_query($link, "CREATE TABLE myCity LIKE City");

$query = "INSERT INTO myCity VALUES (NULL, 'Stuttgart', 'DEU', 'Stuttgart', 617000)";
mysqli_query($link, $query);

printf("New record has ID %d.\n", mysqli_insert_id($link));

/* drop table */
mysqli_query($link, "DROP TABLE myCity");

上の例の出力は以下となります。

New record has ID 1.