Ответ 1
Для этого существует функция PHP (а также MySQL): mysql_insert_id()
В моей таблице mysql у меня есть идентификатор-столбец, который настроен на автоинкремент.
тогда я делаю такие запросы:
INSERT INTO table (id, foo) VALUES ('', 'bar')
как я могу безопасно узнать, какой идентификатор был сгенерирован с этой вставкой?
Если я просто запрошу последний идентификатор, это может быть небезопасно, так как между ними могла произойти другая вставка, верно?
Для этого существует функция PHP (а также MySQL): mysql_insert_id()
Используйте LAST_INSERT_ID() в SQL
SELECT LAST_INSERT_ID();
Используйте mysql_insert_id() в PHP
Если вы используете mysql_query ( "..." ), то mysql_insert_id() - это функция, которая вам нужна. Если вы используете что-то еще для выполнения запросов, тогда необходимо проверить соответствующую документацию
Если вы используете PHP для получения значения auto_incremented, которое возвращается после инструкции INSERT, попробуйте использовать функцию MySQLi insert_id
. Более старая версия mysql_insert_id()
устарела в PHP.
Пример ниже:
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$mysqli->query("CREATE TABLE myCity LIKE City");
$query = "INSERT INTO myCity VALUES (NULL, 'Stuttgart', 'DEU', 'Stuttgart', 617000)";
$mysqli->query($query);
printf ("New Record has id %d.\n", $mysqli->insert_id);
/* drop table */
$mysqli->query("DROP TABLE myCity");
/* close connection */
$mysqli->close();
?>
mysql_insert_id();
Также вы можете просто запустить этот запрос:
INSERT INTO table (foo) VALUES ('bar')
Так как это PHP, mysql_insert_id должен сделать трюк
Взгляните на довольно хороший пример в http://php.net/manual/en/function.mysql-insert-id.php
также в PDO после команды execute в качестве примера ниже:
$lastId = $dbh->lastInsertId();
нажмите REF