ホームページ >バックエンド開発 >PHPチュートリアル >PHP/MySQL で INSERT 後に自動生成された ID を効率的に取得するにはどうすればよいですか?

PHP/MySQL で INSERT 後に自動生成された ID を効率的に取得するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-07 22:20:18732ブラウズ

How Can I Efficiently Retrieve the Auto-Generated ID After an INSERT in PHP/MySQL?

PHP/MySQL で挿入された行の ID を取得する

MySQL データベースを使用する場合の一般的なタスクの 1 つは、行を挿入し、その後その行を取得することです。自動生成されたID。このプロセスには 2 つの異なるクエリが含まれており、行の挿入と ID のフェッチの間に時間差が生じる可能性があり、競合状態が発生する可能性があります。

幸いなことに、PHP はこの問題に対する簡単な解決策、mysqli_insert_id() 関数を提供します。 。次のコードはその使用法を示しています。

$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);

mysqli_insert_id() は、最新の INSERT ステートメントによって生成された ID を直接取得し、追加のクエリの必要性を排除します。このアプローチでは、取得した ID が挿入したばかりの行に対応することが保証されます。

別の方法は、単一のクエリ内で MySQL の LAST_INSERT_ID() 関数を利用することです。複数の INSERT ステートメントを組み合わせることで、複数のテーブルを同時に更新し、個別に ID を取得する煩わしさを回避することが可能になります。

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。