Это довольно простой вопрос, в настоящее время у меня две таблицы, а во второй таблице есть столбец внешнего ключа для таблицы A
id Name ---------------- 1 Name1 2 Name2
id Name Parent ------------------------- 1 John 1
Что происходит:
Name1
в таблицу A
а mysql вставляет идентификатор. John
в таблицу B
и установить Parent
id
только что вставленного запроса. После первой вставки вы можете:
$res = mysql_query('SELECT LAST_INSERT_ID()'); $row = mysql_fetch_array($res); $lastInsertId = $row[0];
Кроме того, вы можете использовать mysql_insert_id . Однако из руководства:
mysql_insert_id () преобразует возвращаемый тип собственной функции API MySQL C mysql_insert_id () в тип long (с именем int в PHP). Если ваш столбец AUTO_INCREMENT имеет тип столбца BIGINT (64 бит), преобразование может привести к некорректному значению. Вместо этого в SQL-запросе используйте внутреннюю функцию MySQL SQL LAST_INSERT_ID ().
Из-за этого первый выбранный мной метод является предпочтительным, если ваш столбец использует или может использовать его в будущем – BIGINT
.
Вы можете использовать mysql_insert_id()
для получения последнего вставленного id.
mysql_insert_id – получить идентификатор, сгенерированный в последнем запросе
Внимание:
mysql_insert_id () преобразует возвращаемый тип собственной функции API MySQL C mysql_insert_id () в тип long (с именем int в PHP). Если ваш столбец AUTO_INCREMENT имеет тип столбца BIGINT (64 бит), преобразование может привести к некорректному значению. Вместо этого в SQL-запросе используйте внутреннюю функцию MySQL SQL LAST_INSERT_ID (). Дополнительные сведения о максимальных значениях максимального значения PHP см. В документации по целому ряду.
Пример:
mysql_query("INSERT INTO .........."); printf("Last inserted record has id %d\n", mysql_insert_id());
После выполнения запроса INSERT
с помощью mysql_query
вы можете использовать mysql_insert_id
для получения идентификатора, который использовался для ранее вставленной строки.