Dans PHP, lorsque nous utilisons pour effectuer des opérations de base de données, nous utilisons généralement MySQLI_Query () pour exécuter la requête et utiliser l'objet mysqli_result pour obtenir le résultat. Si vous souhaitez convertir les résultats de la requête directement en objets, vous pouvez utiliser la méthode mysqli_result :: fetch_object () .
Cet article vous amènera pas à pas à l'utiliser et à le démontrer avec un exemple simple.
fetch_object () est une méthode de la classe mysqli_result , utilisée pour obtenir la ligne actuelle du résultat de la requête et le renvoyer en tant qu'objet. Par défaut, il renvoie un objet standard ( STDClass ) dont le nom de la propriété correspond au nom de champ de la base de données.
Vous pouvez également transmettre un nom de classe, laisser la méthode renvoyer une instance de la classe spécifiée et attribuer la valeur de champ à l'attribut objet.
object mysqli_result::fetch_object ([ string $class_name = "stdClass" [, array $params ]] )
$ class_name : le nom de classe à instanciation, la valeur par défaut est stdclass .
$ params : si le nom de classe est spécifié, le paramètre du constructeur peut être passé.
Supposons que vous ayez un tableau appelé utilisateurs , la structure est la suivante:
identifiant | nom | |
---|---|---|
1 | Alice | alice@m66.net |
2 | Bob | bob@m66.net |
Voici l'exemple de code:
<?php
// Connectez-vous à la base de données
$mysqli = new mysqli("localhost", "username", "password", "database");
// Vérifiez la connexion
if ($mysqli->connect_errno) {
echo "Échec de la connexion: " . $mysqli->connect_error;
exit();
}
// Exécuter une requête
$sql = "SELECT id, name, email FROM users";
$result = $mysqli->query($sql);
if ($result) {
while ($user = $result->fetch_object()) {
echo "ID: " . $user->id . "<br>";
echo "Name: " . $user->name . "<br>";
echo "Email: " . $user->email . "<br><br>";
}
$result->free();
} else {
echo "La requête a échoué: " . $mysqli->error;
}
// Fermer la connexion
$mysqli->close();
?>
Dans cet exemple, chaque utilisateur de boucle $ est un objet STDClass contenant l'ID , le nom et les attributs de messagerie de la ligne actuelle.
Vous pouvez également laisser fetch_object () renvoyer un objet de classe spécifique, tel que:
<?php
class User {
public $id;
public $name;
public $email;
public function display() {
echo "[$this->id] $this->name <$this->email><br>";
}
}
$sql = "SELECT id, name, email FROM users";
$result = $mysqli->query($sql);
if ($result) {
while ($user = $result->fetch_object('User')) {
$user->display();
}
$result->free();
}
?>
De cette façon, chaque fois que vous boucle, vous obtenez une instance utilisateur et vous pouvez appeler ses méthodes directement.
Si le résultat de la requête est vide, fetch_object () renvoie false .
Si un nom de classe est spécifié, les attributs de la classe doivent être publics , sinon la valeur ne peut pas être attribuée directement.
fetch_object () Extraire uniquement une ligne de données à la fois et doit être utilisée dans une boucle.