ホームページ >バックエンド開発 >PHPチュートリアル >PHP/MySQL で INSERT 後に自動生成された ID を効率的に取得するにはどうすればよいですか?
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 サイトの他の関連記事を参照してください。