$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()
すでにこの機能があります。
もう1つの方法は、両方のクエリを一度に実行し、MySQL
を使用することです。 の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を個別に追跡します(したがって、競合はすでに防止されています)。