English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В этом руководстве вы узнаете, как использовать PHP для извлечения уникального ID последней вставленной строки из таблицы MySQL.
В " 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(); ?>
<?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); ?>