Wiederholen eines PDO-Ergebnissatzes von Anfang an
Beim Übergang von MySQL-SELECT-Methoden zu PDO-Methoden wird der Array-Zeiger zum Durchlaufen zurückgesetzt Das mehrfache Ergebnissatz kann eine Herausforderung sein. Dies liegt an der unterschiedlichen Art und Weise, wie diese Methoden mit Array-Zeigern umgehen.
Im bereitgestellten Code durchläuft die erste while-Schleife erfolgreich das abgerufene Array, beginnend mit Zeile Null. Allerdings gibt die zweite while-Schleife einen leeren Satz zurück, da die fetch()-Methode von PDO den Array-Zeiger bei jedem Aufruf vorrückt.
Um das gewünschte Verhalten zu erreichen, kann man die Ergebnisse in einem Array speichern und dann durch dieses Array iterieren mehrfach. Hier ist ein Beispiel:
$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 }
Durch die Verwendung von fetchAll() werden alle Zeilen aus der Ergebnismenge im $rows-Array gespeichert. Dadurch können Sie das Array mehrmals durchlaufen, ohne den Array-Zeiger manuell zurückzusetzen.
Das obige ist der detaillierte Inhalt vonWie kann ich einen PDO-Ergebnissatz mehrmals durchlaufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!