Heim > Datenbank > MySQL-Tutorial > Wie setze ich den Array-Zeiger in PDO-Ergebnissen nach „fetchAll()' zurück?

Wie setze ich den Array-Zeiger in PDO-Ergebnissen nach „fetchAll()' zurück?

Barbara Streisand
Freigeben: 2024-12-01 01:32:09
Original
988 Leute haben es durchsucht

How to Reset the Array Pointer in PDO Results After `fetchAll()`?

PDO Results Array Pointer Reset – Eine detaillierte Lösung

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
}
Nach dem Login kopieren

Zusätzlicher Kontext

  • Die fetchAll()-Methode sammelt alle Ergebnisse in einem Array.
  • Durch die Iteration über das $rows-Array wird sichergestellt, dass der Zeiger immer in der ersten Zeile jedes Arrays beginnt Schleife.

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage