mysqli::$insert_id
mysqli_insert_id
直近のクエリの AUTO_INCREMENT カラムで生成した値を返す
説明
オブジェクト指向型
intstring$mysqli->insert_id;
手続き型
intstring mysqli_insert_id(mysqli $mysql
)
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);
/* 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");