Maison >développement back-end >tutoriel php >Comment parcourir plusieurs fois les résultats de récupération PDO ?

Comment parcourir plusieurs fois les résultats de récupération PDO ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-30 07:52:28728parcourir

How to Iterate Through PDO Fetch Results Multiple Times?

Réinitialisation de l'itérateur pour la traversée répétée de tableaux dans PDO

PDO fournit une approche plus robuste et orientée objet pour les interactions avec les bases de données. Lors de la transition des méthodes MySQL SELECT vers PDO, réinitialiser le pointeur de tableau pour parcourir plusieurs fois les résultats récupérés peut être difficile.

Pour y parvenir dans MySQL, mysql_data_seek($result, 0) est utilisé. Avec PDO, une simple réinitialisation du pointeur n'est pas prise en charge. Au lieu de cela, vous devez envisager une approche différente.

Solution : stocker et reboucler un tableau

La solution consiste à stocker les résultats récupérés dans un tableau, puis parcourir le tableau deux fois. Ce faisant, vous vous éloignez de l'itérateur PDO et prenez le contrôle du pointeur interne du tableau.

Voici comment procéder :

<code class="php">$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 of the loop
}

foreach ($rows as $r) {
    // Second run of the loop
}</code>

Cette approche évite les complexités liées à la réinitialisation de l'itérateur PDO. et fournit une solution plus simple pour parcourir plusieurs fois les résultats récupérés.

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