データベースで INSERT 操作を実行した後に生成された ID を知る必要がある場合があります (私が使用している MySQL の主キーは AUTO_INCREMENT に設定されています。挿入操作を実行する場合、ID 値を指定する必要はなく、ID 値が生成されます)このとき、PHP 関数 mysql_insert_id() を使用してこの ID を直接取得でき、非常に便利です。
ただし、AUTO_INCREMENT 属性を持つ ID 列の値が INSERT ステートメントで明確に指定されている場合、ID 値はユーザーによって指定され、データベースによって自動的に生成されないため、関数は 0 を返します。
PHP マニュアルでは、この関数について次のように説明されています。
mysql_insert_id()構文: mysql_insert_id(接続)
パラメータ接続、オプション。 MySQL 接続を指定します。指定しない場合は、以前の接続が使用されます。
mysql_insert_id() は、指定された接続における前の INSERT クエリで生成された AUTO_INCREMENT の ID 番号を返します。接続が指定されていない場合は、最後に開いた接続が使用されます。
後で使用するために値を保存する必要がある場合は、値を生成したクエリの直後に必ず mysql_insert_id() を呼び出してください。
リーリー
mysql_insert_id() は、指定された link_identifier 内の前の INSERT クエリで生成された AUTO_INCREMENT の ID 番号を返します。 link_identifier が指定されていない場合は、最後に開かれた接続が使用されます。前のクエリで AUTO_INCREMENT の値が生成されなかった場合、mysql_insert_id() は 0 を返します。後で使用するために値を保存する必要がある場合は、値を生成したクエリの直後に mysql_insert_id() を呼び出してください。LAST_INSERT_ID()
SELECT LAST_INSERT_ID(); を使用して、LAST_INSERT_ID() の戻り値をクエリできます。
複数のレコードを挿入するには単一の INSERT ステートメントを使用します。LAST_INSERT_ID() は、挿入された最初のレコードによって生成された AUTO_INCREMENT 値のみを返します。