Introduction
La migration des méthodes MySQL SELECT vers les méthodes PDO peut introduire défis. La réinitialisation du pointeur de tableau, qui permet de parcourir plusieurs fois un tableau récupéré, est l'un de ces défis.
Le problème
Dans MySQL, la fonction mysql_data_seek() y parvient réinitialisation du pointeur. Cependant, en PDO, cette fonction n'est pas disponible. Comme illustré dans le code fourni, les boucles suivantes commençant à partir de la ligne zéro ne renvoient aucun résultat.
La solution
Pour surmonter ce problème, stockez les résultats récupérés dans un tableau et parcourir ce tableau plusieurs fois. Ce code modifié illustre la solution :
$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) { // seconds run }
Contexte supplémentaire
En implémentant cette solution, vous pouvez réinitialiser efficacement le pointeur de tableau dans les résultats PDO, vous permettant de parcourir le tableau récupéré plusieurs fois à partir de la ligne zéro.
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!