ホームページ > データベース > mysql チュートリアル > PHP/MySQL で INSERT 後に自動インクリメント ID を効率的に取得するにはどうすればよいですか?

PHP/MySQL で INSERT 後に自動インクリメント ID を効率的に取得するにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-05 02:14:46
オリジナル
295 人が閲覧しました

How to Efficiently Retrieve the Auto-Increment ID After an INSERT in PHP/MySQL?

PHP/MySQL での行の挿入とその 'id' の取得

MySQL テーブルに行を挿入すると、'id' フィールドが自動インクリメントされ、取得挿入された行の「id」は一般的なタスクです。 1 つのアプローチでは、行を挿入してから一致する行をクエリする必要がありますが、これにより潜在的な競合状態が発生します。

解決策: mysqli_insert_id() を使用する

この問題を回避するために、PHP は mysqli_insert_id( ) 関数。指定された MySQL 接続に対して最後に挿入された行の ID を直接取得します。この方法では、競合状態や結果の重複のリスクなしに ID が確実に取得されます。

<?php
$link = mysqli_connect('127.0.0.1', 'my_user', 'my_pass', 'my_db');
mysqli_query($link, "INSERT INTO mytable (1, 2, 3, 'blah')");
$id = mysqli_insert_id($link);
?>
ログイン後にコピー

代替解決策: LAST_INSERT_ID()

別の方法では、MySQL の LAST_INSERT_ID() 関数を使用します。これは、複数テーブルの挿入操作内で利用できます。このアプローチでは、行が複数のテーブルに挿入され、LAST_INSERT_ID() 関数によって、単一のクエリ内で変更されたすべてのテーブルに「id」が確実に伝播されます。

<?php
mysqli_query($link, "INSERT INTO my_user_table ...;
  INSERT INTO my_other_table (`user_id`) VALUES (LAST_INSERT_ID())");
?>
ログイン後にコピー

注: 各 MySQL 接続は独自の「ID」追跡を維持し、異なる接続間の競合を防ぎます。

以上がPHP/MySQL で INSERT 後に自動インクリメント ID を効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート