Obtenir ID du dernier enregistrement Inséré
Si nous effectuons une instruction INSERT ou UPDATE sur une table avec un champ AUTO_INCREMENT, nous pouvons obtenir immédiatement l'ID du dernier enregistrement Inséré / mise à jour.
Dans la table "MyGuests" , le "id" colonne est un champ 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
)
Les exemples suivants sont égaux aux exemples de la page précédente ( PHP Insérer des données dans MySQL ), sauf que nous avons ajouté une seule ligne de code pour récupérer l'ID du dernier enregistrement inséré. Nous réitérons également le dernier ID inséré:
Exemple (MySQLi Object-oriented)
<?php
$servername = "localhost";
$username = "username";
$password =
"password";
$dbname =
"myDB";
// Create connection
$conn =
new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "INSERT INTO
MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', '[email protected]')";
if ($conn->query($sql) === TRUE) {
$last_id =
$conn->insert_id;
echo "New record created successfully. Last
inserted ID is: " . $last_id;
} else {
echo
"Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
Exemple (MySQLi Procedural)
<?php
$servername = "localhost";
$username = "username";
$password =
"password";
$dbname =
"myDB";
// Create connection
$conn = mysqli_connect($servername, $username, $password,
$dbname);
// Check connection
if (!$conn) {
die("Connection
failed: " . mysqli_connect_error());
}
$sql = "INSERT INTO
MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', '[email protected]')";
if (mysqli_query($conn, $sql)) {
$last_id =
mysqli_insert_id($conn);
echo "New record created
successfully. Last inserted ID is: " . $last_id;
} else {
echo "Error: "
. $sql . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);
?>
Exemple (PDO)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname =
"myDBPDO";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname",
$username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE,
PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO
MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', '[email protected]')";
// use exec() because no
results are returned
$conn->exec($sql);
$last_id = $conn->lastInsertId();
echo "New record
created successfully. Last inserted ID is: " . $last_id;
}
catch(PDOException $e)
{
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
?>