Если мы выполним INSERT или UPDATE в таблице с полем AUTO_INCREMENT, мы можем немедленно получить ID последней вставленной/обновленной записи. В таблице «MyGuests» столбец «id» является полем AUTO_INCREMENT:
CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);Следующие примеры аналогичны примерам с предыдущей страницы (Вставка данных), за исключением того, что мы добавили одну единственную строку кода для получения ID последней вставленной записи. Мы также выводим принтом ID последней вставленной записи:
<?php
$servername = 'localhost';
$username = 'username';
$password = 'password';
$dbname = 'myDB';
// Создание подключения
$conn = new mysqli($servername, $username, $password, $dbname);
// Проверка подключения
if ($conn -> connect_error) {
die("Connection failed: {$conn -> connect_error}");
}
$sql = 'INSERT INTO MyGuests (firstname, lastname, email)
VALUES ("John", "Doe", "john@example.com");';
if ($conn -> query($sql) === true) {
$last_id = $conn -> insert_id;
print("New record created successfully. Last inserted ID is: {$last_id}");
} else {
print("Error: {$sql}<br>{$conn -> error}");
}
$conn -> close();<?php
$servername = 'localhost';
$username = 'username';
$password = 'password';
$dbname = 'myDB';
// Создание подключения
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Проверка подключения
if (!$conn) {
die('Connection failed: ' . mysqli_connect_error());
}
$sql = 'INSERT INTO MyGuests (firstname, lastname, email)
VALUES ("John", "Doe", "john@example.com");';
if (mysqli_query($conn, $sql)) {
$last_id = mysqli_insert_id($conn);
print("New record created successfully. Last inserted ID is: {$last_id}");
} else {
print("Error: {$sql}<br>" . mysqli_error($conn));
}
mysqli_close($conn);<?php
$servername = 'localhost';
$username = 'username';
$password = 'password';
$dbname = 'myDB';
try {
$conn = new PDO(
"mysql:host={$servername};dbname={$dbname}",
$username,
$password
);
// установка режима ошибки PDO на исключение
$conn -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = 'INSERT INTO MyGuests (firstname, lastname, email)
VALUES ("John", "Doe", "john@example.com");';
// использование exec(), потому что результаты не возвращаются
$conn -> exec($sql);
$last_id = $conn -> lastInsertId();
print("New record created successfully. Last inserted ID is: {$last_id}");
} catch(PDOException $e) {
print("{$sql}<br>{$e -> getMessage()}");
}
$conn = null;