OUJOOD.COM
La fonction fetch_object() / mysqli_fetch_object() en PHP
PHP Version: 5+
La fonction fetch_object() / mysqli_fetch_object() est utilisée en PHP pour récupérer une ligne de résultat de base de données sous forme d'objet. Elle est couramment utilisée dans les applications basées sur MySQLi, une extension améliorée de PHP pour interagir avec des bases de données MySQL.
Définition et Utilisation
Cette fonction est utilisée pour extraire une ligne de résultat de la requête vers la base de données. La ligne est renvoyée sous forme d'objet, ce qui permet d'accéder aux colonnes de la ligne en tant que propriétés de l'objet.
Syntaxes Orientées Objet et Procédurales
En utilisant la syntaxe orientée objet avec MySQLi :
$mysqli = new mysqli("localhost", "nom_utilisateur", "mot_de_passe", "ma_base_de_donnees"); if ($mysqli->connect_error) { die("La connexion a échoué : " . $mysqli->connect_error); } $result = $mysqli->query("SELECT nom, prenom FROM utilisateurs"); if ($result) { while ($objet = $result->fetch_object()) { echo $objet->nom . " " . $objet->prenom . "<br>"; } $result->close(); } $mysqli->close();
En utilisant la syntaxe procédurale avec MySQLi :
$mysqli = mysqli_connect("localhost", "nom_utilisateur", "mot_de_passe", "ma_base_de_donnees"); if (!$mysqli) { die("La connexion a échoué : " . mysqli_connect_error()); } $result = mysqli_query($mysqli, "SELECT nom, prenom FROM utilisateurs"); if ($result) { while ($objet = mysqli_fetch_object($result)) { echo $objet->nom . " " . $objet->prenom . "<br>"; } mysqli_free_result($result); } mysqli_close($mysqli);
Valeurs Possibles et Paramètres
La fonction peut prendre un paramètre optionnel qui spécifie la classe de l'objet à retourner. Si ce paramètre est omis, l'objet sera de la classe générique stdClass.
Exemples Pratiques
Imaginons une table "utilisateurs" avec les colonnes "nom" et "prenom". Voici comment la fonction pourrait être utilisée :
Exemple : 📋 Copier le code
<?php class Utilisateur { public $nom; public $prenom; } $mysqli = new mysqli("localhost", "nom_utilisateur", "mot_de_passe", "ma_base_de_donnees"); if ($mysqli->connect_error) { die("La connexion a échoué : " . $mysqli->connect_error); } $result = $mysqli->query("SELECT nom, prenom FROM utilisateurs"); if ($result) { while ($objet = $result->fetch_object("Utilisateur")) { echo $objet->nom . " " . $objet->prenom . "<br>"; } $result->close(); } $mysqli->close(); ?>
Astuces et Conseils
- Assurez-vous de bien nettoyer vos données provenant de la base de données avant de les afficher pour éviter les attaques par injection SQL.
- Utilisez des classes personnalisées pour structurer vos données extraites de la base de données, ce qui rendra votre code plus propre et plus maintenable.
- Libérez toujours les résultats et fermez les connexions après utilisation pour éviter les fuites de mémoire.
Cas d'utilisation pratique avec exemples dans les deux approches (orientée objet et procédurale)
Afficher la liste des utilisateurs depuis une table "utilisateurs"
Approche Orientée Objet :
Exemple : 📋 Copier le code
$mysqli = new mysqli("localhost", "nom_utilisateur", "mot_de_passe", "ma_base_de_donnees"); if ($mysqli->connect_error) { die("La connexion a échoué : " . $mysqli->connect_error); } $result = $mysqli->query("SELECT nom, prenom FROM utilisateurs"); if ($result) { echo "<ul>"; while ($objet = $result->fetch_object()) { echo "<li>{$objet->nom} {$objet->prenom}</li>"; } echo "</ul>"; $result->close(); } $mysqli->close(); ?>
Approche Procédurale :
Exemple : 📋 Copier le code
$mysqli = mysqli_connect("localhost", "nom_utilisateur", "mot_de_passe", "ma_base_de_donnees"); if (!$mysqli) { die("La connexion a échoué : " . mysqli_connect_error()); } $result = mysqli_query($mysqli, "SELECT nom, prenom FROM utilisateurs"); if ($result) { echo "<ul>"; while ($objet = mysqli_fetch_object($result)) { echo "<li>{$objet->nom} {$objet->prenom}</li>"; } echo "</ul>"; mysqli_free_result($result); } mysqli_close($mysqli); ?>
Créer un objet personnalisé pour les résultats
Approche Orientée Objet :
Exemple : 📋 Copier le code
class Utilisateur { public $nom; public $prenom; } $mysqli = new mysqli("localhost", "nom_utilisateur", "mot_de_passe", "ma_base_de_donnees"); if ($mysqli->connect_error) { die("La connexion a échoué : " . $mysqli->connect_error); } $result = $mysqli->query("SELECT nom, prenom FROM utilisateurs"); if ($result) { while ($objet = $result->fetch_object("Utilisateur")) { echo "{$objet->prenom} {$objet->nom}
"; } $result->close(); } $mysqli->close(); ?>
Ces exemples illustrent comment utiliser la fonction fetch_object() / mysqli_fetch_object() dans les approches orientée objet et procédurale pour récupérer et afficher les données de la base de données sous forme d'objets. N'oubliez pas d'adapter les informations de connexion et les requêtes SQL selon votre environnement.
Approche Procédurale :
Exemple : 📋 Copier le code
class Utilisateur { public $nom; public $prenom; } $mysqli = mysqli_connect("localhost", "nom_utilisateur", "mot_de_passe", "ma_base_de_donnees"); if (!$mysqli) { die("La connexion a échoué : " . mysqli_connect_error()); } $result = mysqli_query($mysqli, "SELECT nom, prenom FROM utilisateurs"); if ($result) { while ($objet = mysqli_fetch_object($result, "Utilisateur")) { echo "{$objet->prenom} {$objet->nom}
"; } mysqli_free_result($result); } mysqli_close($mysqli); ?>
En conclusion, la fonction fetch_object() / mysqli_fetch_object() est un outil puissant pour récupérer des données de base de données sous forme d'objets, simplifiant ainsi leur manipulation au sein de votre code PHP.