1. ホーム
  2. php

[解決済み] PHP/MySQL で行を挿入したら 'id' を取得する

2022-04-22 06:32:38

質問

私のテーブルの'id'フィールドは、行を挿入すると自動的に増加します。行を挿入して、そのIDを取得したいのですが、どうすればよいですか?

言ったとおりにやろうと思うのですが、行を挿入してからidを取得するまでの時間を気にせずにできる方法はないでしょうか?

入力された情報と一致する行をデータベースに問い合わせることはできますが、重複する可能性が高く、違いは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() .

何をするにしても、挿入してから"をするのはやめましょう。 SELECT MAX(id) FROM mytable となります。おっしゃるとおり、レースコンディションになるので、その必要はありません。 mysqli_insert_id() は、すでにこの機能を備えています。


もう一つの方法は、両方のクエリを一度に実行することです。 MySQL 's LAST_INSERT_ID() メソッドを使用すると、両方のテーブルが一度に変更されます (そして、PHP は ID を必要としません)。

mysqli_query($link, "INSERT INTO my_user_table ...;
  INSERT INTO my_other_table (`user_id`) VALUES (LAST_INSERT_ID())");

備考 各接続は別々にIDを記録していること(そのため、競合はすでに防止されています)。