$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);
Siehe mysqli_insert_id()
.
Was auch immer Sie tun, fügen Sie nicht ein und führen Sie dann ein "SELECT MAX(id) FROM mytable
aus ". Wie Sie sagen, es ist eine Race-Condition und es besteht keine Notwendigkeit. mysqli_insert_id()
verfügt bereits über diese Funktionalität.
Eine andere Möglichkeit wäre, beide Abfragen auf einmal auszuführen und MySQL
zu verwenden 's LAST_INSERT_ID()
-Methode, bei der beide Tabellen gleichzeitig geändert werden (und PHP keine ID benötigt), wie:
mysqli_query($link, "INSERT INTO my_user_table ...;
INSERT INTO my_other_table (`user_id`) VALUES (LAST_INSERT_ID())");
Hinweis dass jede Verbindung die ID separat verfolgt (so werden Konflikte bereits verhindert).