Skip to content

Latest commit

 

History

History
112 lines (84 loc) · 3.49 KB

File metadata and controls

112 lines (84 loc) · 3.49 KB

Получение последнего вставленного идентификатора

Получение идентификатора последней вставленной записи

Если мы выполним 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();

Пример в процедурном стиле MySQLi

<?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);

Пример с использованием PDO

<?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;