$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
LAST_INSERT_ID()
метод, при който и двете таблици се променят наведнъж (и PHP не се нуждае от никакъв идентификатор), като:
mysqli_query($link, "INSERT INTO my_user_table ...;
INSERT INTO my_other_table (`user_id`) VALUES (LAST_INSERT_ID())");
Забележка че всяка връзка следи ID отделно (така че конфликтите вече са предотвратени).