Maison >développement back-end >tutoriel php >Comment parcourir un ensemble de résultats PDO plusieurs fois ?

Comment parcourir un ensemble de résultats PDO plusieurs fois ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-29 14:56:02971parcourir

How to Iterate Through a PDO Result Set Multiple Times?

Réitération d'un ensemble de résultats PDO depuis le début

Lors de la transition des méthodes MySQL SELECT aux méthodes PDO, réinitialisation du pointeur de tableau pour parcourir le résultat défini plusieurs fois peut être difficile. Cela est dû à la différence dans la façon dont ces méthodes gèrent les pointeurs de tableau.

Dans le code fourni, la première boucle while parcourt avec succès le tableau récupéré à partir de la ligne zéro. Cependant, la deuxième boucle while renvoie un ensemble vide puisque la méthode fetch() de PDO avance le pointeur de tableau à chaque appel.

Pour obtenir le comportement souhaité, on peut stocker les résultats dans un tableau, puis parcourir ce tableau plusieurs fois. Voici un exemple :

$pdo = new PDO('mysql:host=' . $host . ';dbname='.$database, $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$stmt = $pdo->prepare('SELECT * FROM mytable WHERE active = 1 ORDER BY name ASC');
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$stmt->execute();

$rows = $stmt->fetchAll();

foreach ($rows as $r) {
    // first run
}

foreach ($rows as $r) {
    // second run
}

En utilisant fetchAll(), toutes les lignes de l'ensemble de résultats sont stockées dans le tableau $rows. Cela vous permet de parcourir le tableau plusieurs fois sans réinitialiser manuellement le pointeur du tableau.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn