OUJOOD.COM
Définition et utilisation de la fonction insert_id()/mysqli_insert_id() en PHP
La fonction insert_id() ou mysqli_insert_id() permet de récupérer l'identifiant auto-incrémenté d'une ligne insérée dans une table MySQL.
Fonction insert_id()
La fonction insert_id() est disponible dans tous les scripts PHP. Elle retourne l'identifiant auto-incrémenté de la dernière ligne insérée dans une table MySQL.
Fonction mysqli_insert_id()
comme la fonction insert_id(), la fonction mysqli_insert_id() est disponible dans les scripts PHP qui utilisent l'extension mysqli. Elle retourne également l'identifiant auto-incrémenté de la dernière ligne insérée dans une table MySQL.
Syntaxe orientée objet
En PHP orienté objet, la fonction insert_id() est accessible via l'objet mysqli. La syntaxe est la suivante :
// Récupérer l'identifiant auto-incrémenté $id = $mysqli->insert_id;
Syntaxe procédurale
En PHP procédural, la fonction mysqli_insert_id() est accessible via la fonction mysqli_insert_id(). La syntaxe est la suivante :
// Récupérer l'identifiant auto-incrémenté $id = mysqli_insert_id($mysqli);
Valeurs possibles et paramètres
La fonction insert_id() retourne une valeur entière. Si aucune ligne n'a été insérée, la fonction retourne la valeur 0.
La fonction insert_id() ne prend aucun paramètre.
Exemples pratiques
Exemple orienté objet
Exemple : 📋 Copier le code
<?php // Connexion à la base de données $mysqli = new mysqli('seveur', 'utilisateur, 'motDePasse', 'ma_base_de_données'); // Vérification de la connexion if ($mysqli->connect_error) { die('Erreur de connexion : ' . $mysqli->connect_error); } // INSERT $query = 'INSERT INTO `users` (`name`, `age`) VALUES ("John Doe", 30);'; $mysqli->query($query); // Récupérer l'identifiant auto-incrémenté $id = $mysqli->insert_id; // Affichage de l'identifiant echo $id; ?>
Exemple procédural
Exemple : 📋 Copier le code
<?php // Connexion à la base de données $mysqli = mysqli_connect('seveur', 'utilisateur, 'motDePasse', 'ma_base_de_données'); // Vérification de la connexion if (mysqli_connect_errno()) { die('Erreur de connexion : ' . mysqli_connect_error()); } // INSERT $query = 'INSERT INTO `users` (`name`, `age`) VALUES ("John Doe", 30);'; mysqli_query($mysqli, $query); // Récupérer l'identifiant auto-incrémenté $id = mysqli_insert_id($mysqli); // Affichage de l'identifiant echo $id; ?>
Cas d'utilisation pratiques
Voici quelques cas d'utilisation de la fonction insert_id(), avec des exemples dans les deux approches (orientée objet et procédurale) :
Cas d'utilisation 1
Insérer un nouvel utilisateur dans une table "users" et récupérer son ID auto-incrémenté.
Approche Orientée Objet :
Exemple : 📋 Copier le code
<?php // Connexion à la base de données $mysqli = new mysqli('seveur', 'utilisateur, 'motDePasse', 'ma_base_de_données'); // Vérification de la connexion if ($mysqli->connect_error) { die('Erreur de connexion : ' . $mysqli->connect_error); } // INSERT un nouvel utilisateur $query = 'INSERT INTO `users` (`name`, `age`) VALUES ("John Doe", 30);'; $mysqli->query($query); // Récupérer l'identifiant auto-incrémenté de l'utilisateur ajouté $id = $mysqli->insert_id; // Affichage de l'identifiant echo "L'identifiant de l'utilisateur ajouté est : " . $id; ?>
Approche Procédurale :
Exemple : 📋 Copier le code
<?php // Connexion à la base de données $mysqli = mysqli_connect('seveur', 'utilisateur, 'motDePasse', 'ma_base_de_données'); // Vérification de la connexion if (mysqli_connect_errno()) { die('Erreur de connexion : ' . mysqli_connect_error()); } // INSERT un nouvel utilisateur $query = 'INSERT INTO `users` (`name`, `age`) VALUES ("John Doe", 30);'; mysqli_query($mysqli, $query); // Récupérer l'identifiant auto-incrémenté de l'utilisateur ajouté $id = mysqli_insert_id($mysqli); // Affichage de l'identifiant echo "L'identifiant de l'utilisateur ajouté est : " . $id; ?>
Cas d'utilisation 2
Gérer une table de commandes avec des ID auto-incrémentés.
Approche Orientée Objet :
Exemple : 📋 Copier le code
<?php // Connexion à la base de données $mysqli = new mysqli('seveur', 'utilisateur, 'motDePasse', 'ma_base_de_données'); // Vérification de la connexion if ($mysqli->connect_error) { die('Erreur de connexion : ' . $mysqli->connect_error); } // INSERT une nouvelle commande $query = 'INSERT INTO `orders` (`customer_id`, `total_amount`) VALUES (1, 100);'; $mysqli->query($query); // Récupérer l'identifiant auto-incrémenté de la commande ajoutée $id = $mysqli->insert_id; // Affichage de l'identifiant echo "L'identifiant de la commande ajoutée est : " . $id; ?>
Approche Procédurale :
Exemple : 📋 Copier le code
<?php // Connexion à la base de données $mysqli = mysqli_connect('seveur', 'utilisateur, 'motDePasse', 'ma_base_de_données'); // Vérification de la connexion if (mysqli_connect_errno()) { die('Erreur de connexion : ' . mysqli_connect_error()); } // INSERT une nouvelle commande $query = 'INSERT INTO `orders` (`customer_id`, `total_amount`) VALUES (1, 100);'; mysqli_query($mysqli, $query); // Récupérer l'identifiant auto-incrémenté de la commande ajoutée $id = mysqli_insert_id($mysqli); // Affichage de l'identifiant echo "L'identifiant de la commande ajoutée est : " . $id; ?>
Génération d'un ID unique pour un nouvel enregistrement
La fonction insert_id() peut être utilisée pour générer un ID unique pour un nouvel enregistrement. Par exemple, si vous avez une table de produits avec une colonne id de type INT ayant l'attribut AUTO_INCREMENT, vous pouvez utiliser la fonction insert_id() pour générer un ID unique pour un nouveau produit que vous insérez dans la table.
Exemple orienté objet
Exemple : 📋 Copier le code
<?php // Connexion à la base de données $mysqli = new mysqli('seveur', 'utilisateur, 'motDePasse', 'ma_base_de_données'); // Vérification de la connexion if ($mysqli->connect_error) { die('Erreur de connexion : ' . $mysqli->connect_error); } // INSERT $query = 'INSERT INTO `products` (`name`, `price`) VALUES ("Product 1", 100);'; $mysqli->query($query); // Récupérer l'identifiant auto-incrémenté $id = $mysqli->insert_id; // Affichage de l'identifiant echo $id; ?>
Utilisez le code avec précaution. En savoir plus
Exemple procédural
Exemple : 📋 Copier le code
<?php // Connexion à la base de données $mysqli = mysqli_connect('seveur', 'utilisateur, 'motDePasse', 'ma_base_de_données'); // Vérification de la connexion if (mysqli_connect_errno()) { die('Erreur de connexion : ' . mysqli_connect_error()); } // INSERT $query = 'INSERT INTO `products` (`name`, `price`) VALUES ("Product 1", 100);'; mysqli_query($mysqli, $query); // Récupérer l'identifiant auto-incrémenté $id = mysqli_insert_id($mysqli); // Affichage de l'identifiant echo $id; ?>
Utilisez le code avec précaution. En savoir plus
Création d'une relation parent-enfant
La fonction insert_id() peut également être utilisée pour créer une relation parent-enfant entre deux tables. Par exemple, si vous avez une table de parents avec une colonne id de type INT ayant l'attribut AUTO_INCREMENT, et une table d'enfants avec une colonne parent_id de type INT, vous pouvez utiliser la fonction insert_id() pour récupérer l'ID du parent nouvellement créé et le placer dans la colonne parent_id de l'enfant.
Exemple orienté objet
Exemple : 📋 Copier le code
<?php // Connexion à la base de données $mysqli = new mysqli('seveur', 'utilisateur, 'motDePasse', 'ma_base_de_données'); // Vérification de la connexion if ($mysqli->connect_error) { die('Erreur de connexion : ' . $mysqli->connect_error); } // INSERT $query = 'INSERT INTO `parents` (`name`) VALUES ("Parent 1");'; $mysqli->query($query); // Récupérer l'identifiant auto-incrémenté $parent_id = $mysqli->insert_id; // INSERT $query = 'INSERT INTO `children` (`name`, `parent_id`) VALUES ("Child 1", ' . $parent_id . ');'; $mysqli->query($query); ?>
Utilisez le code avec précaution.
Exemple procédural
Exemple : 📋 Copier le code
<?php // Connexion à la base de données $mysqli = mysqli_connect('seveur', 'utilisateur, 'motDePasse', 'ma_base_de_données'); // Vérification de la connexion if (mysqli_connect_errno()) { die('Erreur de connexion : ' . mysqli_connect_error()); } // INSERT $query = 'INSERT INTO `parents` (`name`) VALUES ("Parent 1");'; mysqli_query($mysqli, $query); // Récupérer l'identifiant auto-incrémenté $parent_id = mysqli_insert_id($mysqli); // INSERT $query = 'INSERT INTO `children` (`name`, `parent_id`) VALUES ("Child 1", ' . $parent_id . ');'; mysqli_query($mysqli, $query); ?>
Utilisez le code avec précaution.
Ces exemples illustrent deux cas courants d'utilisation de la récupération de l'identifiant auto-incrémenté, l'un pour l'ajout d'un nouvel utilisateur et l'autre pour l'ajout d'une nouvelle commande dans une base de données. Les deux approches, orientée objet et procédurale, permettent d'accomplir la même tâche de manière équivalente.
Astuces et conseils d'utilisation pratique
- La fonction insert_id() doit être appelée immédiatement après l'instruction INSERT ou UPDATE qui a généré l'identifiant auto-incrémenté.
- La fonction insert_id() ne doit pas être appelée si aucune ligne n'a été insérée.
- La fonction insert_id() ne peut être utilisée que pour les colonnes de type INT ou BIGINT ayant l'attribut AUTO_INCREMENT.