(PHP 5, PHP 7, PHP 8)
mysqli::$insert_id -- mysqli_insert_id — 直近のクエリの AUTO_INCREMENT カラムで生成した値を返す
オブジェクト指向型
手続き型
AUTO_INCREMENT
属性を持つカラムがあるテーブル上での INSERT
や UPDATE
クエリが生成したIDを返します。 INSERT
文が複数の行を変更する場合、 最初に自動生成された値を返します。
MySQL 関数 LAST_INSERT_ID()
を使って INSERT
や UPDATE
を実行すると、 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);
$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));
mysqli_query($link, "DROP TABLE myCity");
上の例の出力は以下となります。
New record has ID 1.