Einführung
Die Migration von MySQL SELECT-Methoden zu PDO-Methoden kann eine Einführung sein Herausforderungen. Das Zurücksetzen des Array-Zeigers, der das mehrmalige Durchlaufen eines abgerufenen Arrays ermöglicht, ist eine solche Herausforderung.
Das Problem
In MySQL wird dies mit der Funktion mysql_data_seek() erreicht Zeiger zurückgesetzt. In PDO ist diese Funktion jedoch nicht verfügbar. Wie im bereitgestellten Code veranschaulicht, geben nachfolgende Schleifen ab Zeile Null keine Ergebnisse zurück.
Die Lösung
Um dieses Problem zu beheben, speichern Sie die abgerufenen Ergebnisse in einem Array und iterieren Sie mehrmals über dieses Array. Dieser modifizierte Code demonstriert die Lösung:
$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 }
Zusätzlicher Kontext
Durch die Implementierung dieser Lösung können Sie den Array-Zeiger in PDO-Ergebnissen effektiv zurücksetzen, sodass Sie das abgerufene Array mehrmals beginnend mit Zeile Null durchlaufen können.
Das obige ist der detaillierte Inhalt vonWie setze ich den Array-Zeiger in PDO-Ergebnissen nach „fetchAll()' zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!