Zurücksetzen von array-pointer in PDO Ergebnisse
Ich habe Probleme beim Umzug von mysql-SELECT-Methoden, um PDO-Methoden. Ich möchte zum Durchlaufen einer geholt array zweimal, beide Male, beginnend mit der Zeile null. In mysql würde ich verwenden:
mysql_data_seek($result,0);
Verwendung von PDO-Methoden, ich bin nicht sicher, wie Sie dasselbe erreichen. Der code unten ist wie ich bin versucht, dies zu tun. Die erste while-Schleife funktioniert einwandfrei, aber die zweite while-Schleife gibt nichts zurück. Kann mir bitte jemand sagen, wohin ich gehe falsch gemacht?
$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();
while($row = $stmt->fetch())
{
//do something starting with row[0]
}
while($row = $stmt->fetch())
{
//do something else starting with row[0]
}
Vielen Dank für Ihre Hilfe.
InformationsquelleAutor der Frage user1028866 | 2012-02-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Speichern Sie Ihre Ergebnisse in ein array und dann Schleife das array zweimal.
InformationsquelleAutor der Antwort Marwelln
also, wenn Sie aus dem ersten, während es schon angekommen, das Letzte element des resultSet
das ist der Grund, warum die zweiten, während der nichts zurückgibt .
Nutzung von fetchAll zu speichern Sie alle Ihre Ergebnisse dann durch Sie gehen .
InformationsquelleAutor der Antwort Mouna Cheikhna
Entsprechend zu den php-Handbuch können Sie die Ausgabe einer Abfrage mehrere Male,wenn Sie bereiten ein PDOStatement-Objekt mit PDO::prepare(), können Sie die Ausgabe der Anweisung mit mehrere Aufrufe von PDOStatement::execute().
So kann der code Aussehen.
Quelle: http://php.net/manual/en/pdo.query.php
InformationsquelleAutor der Antwort Cedriga
manchmal speichern das Ergebnis von fetchAll() ist keine option. Stattdessen können Sie Sie einfach duplizieren Sie das pdo-Objekt vor dem Aufruf von fetchAll() wie folgt.
Jetzt kann ich noch verwenden Sie das pdo-Objekt Aussagen wie von fetchObject();
InformationsquelleAutor der Antwort Josh Woodcock
Müssen Sie sagen, die Aussage, dass es Scrollbar, indem
PDO::CURSOR_SCROLL
als option in Vorbereitung. Und dann nutzen SiePDO::FETCH_ORI_FIRST
zu bekommen, um das erste element wieder nach erreichen das Ende, so können Sie von vorne beginnen.Vollständige code:
InformationsquelleAutor der Antwort Torge
InformationsquelleAutor der Antwort user3753956