$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);
Se mysqli_insert_id()
.
Uanset hvad du gør, skal du ikke indsætte og derefter lave en "SELECT MAX(id) FROM mytable
". Som du siger, det er en racetilstand, og der er ikke behov for det. mysqli_insert_id()
har allerede denne funktionalitet.
En anden måde ville være at køre begge forespørgsler på én gang og bruge MySQL
's LAST_INSERT_ID()
metode, hvor begge tabeller bliver ændret på én gang (og PHP behøver ikke noget ID), som:
mysqli_query($link, "INSERT INTO my_user_table ...;
INSERT INTO my_other_table (`user_id`) VALUES (LAST_INSERT_ID())");
Bemærk at hver forbindelse holder styr på ID separat (så konflikter er allerede forhindret).