Как получить результат вставки

Это довольно простой вопрос, в настоящее время у меня две таблицы, а во второй таблице есть столбец внешнего ключа для таблицы A

Таблица A:

 id Name ---------------- 1 Name1 2 Name2 

Таблица B:

 id Name Parent ------------------------- 1 John 1 

Что происходит:

  • Мой PHP-скрипт вставляет Name1 в таблицу A а mysql вставляет идентификатор.
  • Мой PHP-скрипт должен вставить 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 для получения идентификатора, который использовался для ранее вставленной строки.