MySQL テーブルに行を挿入するには、多くの場合、新しく生成された 'id' を取得する必要があります。挿入された行に対して。通常、これには、挿入されたデータと一致する行をフェッチするための後続のクエリが必要になりますが、この方法では、さまざまな「id」値を持つ重複行が発生する可能性が生じます。
より効率的なアプローチは、MySQL の自動インクリメントを利用することです。機能と PHP mysqli_insert_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); ?>
このアプローチにより、競合状態のリスクが排除され、新しく挿入された行の「ID」を取得する信頼性の高い方法が提供されます。 row.
もう 1 つの手法では、MySQL の LAST_INSERT_ID() を利用して、1 つのトランザクションで 2 つのクエリを実行します。メソッド:
<?php mysqli_query($link, "INSERT INTO my_user_table ...; INSERT INTO my_other_table (`user_id`) VALUES (LAST_INSERT_ID())"); ?>
このメソッドは、単一のトランザクション内で両方のテーブルを変更し、影響を受けるテーブル間で一貫したデータを保証します。
以上がPHP/MySQL で INSERT 後に自動インクリメントされる ID を効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。