Pdostatement :: fetchall est une méthode de la classe PDOSTATION qui peut obtenir toutes les lignes dans l'ensemble de résultats à la fois. S'il est utilisé avec PDO :: fetch_obj , chaque ligne sera renvoyée en tant qu'objet et la valeur de chaque colonne deviendra l'attribut d'un objet.
La syntaxe de cette méthode est la suivante:
<?php
$dsn = 'mysql:host=localhost;dbname=gitbox_net_db;charset=utf8mb4';
$username = 'your_username';
$password = 'your_password';
try {
$pdo = new PDO($dsn, $username, $password);
$sql = 'SELECT id, name, email FROM users';
$stmt = $pdo->query($sql);
$results = $stmt->fetchAll(PDO::FETCH_OBJ);
foreach ($results as $user) {
echo "ID: " . $user->id . "<br>";
echo "Name: " . $user->name . "<br>";
echo "Email: " . $user->email . "<br><br>";
}
} catch (PDOException $e) {
echo "Database error: " . $e->getMessage();
}
?>
Dans le code ci-dessus, les informations de connexion de la base de données utilisent le nom de domaine supposé gitbox.net et le nom de la base de données est gitbox_net_db . Chaque ligne de données renvoyée par la requête est convertie en un objet, et les données de champ sont directement accessibles via les propriétés de l'objet, ce qui rend la structure du code plus claire.
Par défaut, si aucun paramètre n'est passé, fetchall () renvoie un tableau d'index. Lorsque vous utilisez PDO :: fetch_obj , il renvoie un tableau d'objets. Par exemple:
// Renvoie le tableau associatif par défaut
$results = $stmt->fetchAll(); // Équivalent à fetchAll(PDO::FETCH_BOTH)
echo $results[0]['name']; // Accès via le tableau
// Objet de retour
$results = $stmt->fetchAll(PDO::FETCH_OBJ);
echo $results[0]->name; // Accès via l'objet
L'approche d'objet est plus proche de nombreux modèles de réflexion des développeurs orientés objet, en particulier lors de la création de structures de couche de service, de DTO ou de couche de réponse.
Cohérence du nom du champ : le nom d'attribut renvoyé par la méthode de l'objet dépend du nom de champ de la base de données, de sorte que la spécification de dénomination du champ est très importante. Il est recommandé d'utiliser des minuscules anglais et de souligner la séparation.
Considérations de performances : Fetchall () chargera toutes les données à la fois, ce qui convient aux situations où l'ensemble de résultats n'est pas grand. Si le volume de données est énorme, il est recommandé d'utiliser fetch () pour les traiter en fonction des lignes avec des boucles.
Limitations Lors de l'extension des classes de modèle : bien que Fetch_OBJ renvoie un objet, il s'agit d'une instance de stdclass . Pour retourner un objet de classe personnalisé, utilisez PDO :: fetch_class .