English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP базовый учебник

PHP продвинутый учебник

PHP & MySQL

PHP справочник

Последний вставленный ID PHP MySQL

В этом руководстве вы узнаете, как использовать PHP для извлечения уникального ID последней вставленной строки из таблицы MySQL.

Как получить ID последней вставленной строки

В " PHP MySQL вставкаВ главе вы уже узнали, что AUTO_INCREMENT автоматически создает уникальный ID для столбца каждый раз, когда в таблицу插入 новую запись или строку. Но в некоторых случаях вам может потребоваться автоматически сгенерированный ID для вставки его в вторую таблицу. В таких случаях вы можете использовать функцию PHP mysqli_insert_id() для получения последнего сгенерированного ID, как показано в следующем примере.

В этом примере мы будем использовать вPHP MySQL создание таблицыодинаковый, созданный в главеличныетаблица, которая имеет четыре столбцаid,first_name,last_nameиemailв которомidявляется столбцом-ключом и помечен знаком AUTO_INCREMENT.

Пример: Процедурный подход

<?php
/*Попытка подключения к MySQL серверу. Предполагается, что вы запускаете MySQL.
Сервер с	default настройками (пользователь без пароля "root")*/
$link = mysqli_connect("localhost", "root", "", "demo");
 
//Проверка подключения
if($link === false){
    die("Ошибка: Невозможно подключиться. ". mysqli_connect_error());
}
 
//Попытка выполнения запроса на вставку
$sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('Ron', 'Weasley', '[email protected]')";
if(mysqli_query($link, $sql)){
    //Получение последнего вставленного ID
    $last_id = mysqli_insert_id($link);
    echo "Успешно вставлен запис. Последний вставленный ID: " . $last_id;
} else{
    echo "Ошибка: Не удалось выполнить $sql. ". mysqli_error($link);}}
}
 
//Закрытие соединения
mysqli_close($link);
?>

Пример: объектно-ориентированный способ

<?php
/*Попытка подключения к MySQL серверу. Предполагается, что вы запускаете MySQL.
Сервер с	default настройками (пользователь без пароля "root")*/
$mysqli = new mysqli("localhost", "root", "", "demo");
 
//Проверка подключения
if($mysqli === false){
    die("Ошибка: Не удалось подключиться. ". $mysqli->connect_error);
}
 
//Попытка выполнения запроса на вставку
$sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('Ron', 'Weasley', '[email protected]')";
if($mysqli->query($sql) === true){
    //Получение последнего вставленного ID
    $last_id = $mysqli->insert_id;
    echo "Успешно вставлен запис. Последний вставленный ID: " . $last_id;
} else{
    echo "Ошибка: Не удалось выполнить $sql. ". $mysqli->error;
}
 
//Закрытие соединения
$mysqli->close();
?>

Пример: способ PDO

<?php
/*Попытка подключения к MySQL серверу. Предполагается, что вы запускаете MySQL.
Сервер с	default настройками (пользователь без пароля "root")*/
try{
    $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", "");
    //Установка режима ошибок PDO на исключения
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e){
    die("Ошибка: Не удалось подключиться. ". $e->getMessage());
}
 
//Попытка выполнения запроса на вставку
try{
    $sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('Ron', 'Weasley', '[email protected]')";    
    $pdo->exec($sql);
    $last_id = $pdo->lastInsertId();
    echo "Успешно вставлен запис. Последний вставленный ID: " . $last_id;
} catch(PDOException $e){
    die("Ошибка: Не удалось выполнить $sql. ". $e->getMessage());
}
 
//Закрытие соединения
unset($pdo);
?>