Frage

Ich habe die Arbeit an einem neuen Projekt mit PHP5 vor kurzem begonnen und wollen ihre PDO Klassen für sie verwenden. Das Problem ist, dass der MySQL-PDO-Treiber nicht rowCount unterstützt (), so gibt es keine Möglichkeit, eine Abfrage auszuführen und dann die Anzahl der betroffenen Zeilen erhalten, oder Zeilen zurückgegeben, die ein ziemlich großes Problem ist, so weit es mich betrifft. Ich habe mich gefragt, ob jemand mit diesem behandelt hat, bevor und was Sie haben um es getan zu arbeiten. () Oder fetchAll () zu tun, holt ein Having zu überprüfen, ob alle Zeilen betroffen waren oder zurück scheint wie ein Hack zu mir, ich würde lieber tun nur stmt- $> numRows () oder etwas ähnliches.

War es hilfreich?

Lösung

Sie können eine SELECT FOUND_ROWS() Abfrage direkt nach der ursprünglichen SELECT Abfrage aus Zeilenanzahl zu erhalten.

$pdo->query("SELECT * FROM users");
$foundRows = $pdo->query("SELECT FOUND_ROWS()")->fetchColumn();

Siehe auch: MySQL Docs auf FOUND_ROWS ( )

Andere Tipps

Für diejenigen von Ihnen, die MySQL gespeicherte Prozeduren verwenden, ist diese Lösung nicht wirklich machbar. Was würde ich vorschlagen, dass Sie tun, ist Ihre gespeicherte Prozedur zwei Rowsets erstellen müssen. Die erste enthält eine Zeile und eine Spalte, die Anzahl der Datensätze enthält. Die zweite wird das Re-Cord, die Sie zum Abrufen dieser Anzahl von Zeilen verwendet wird.

Die Zahl der unbegrenzten Reihen kann, ohne dass die SELECT COUNT(*) / WHERE Klauseln eine LIMIT mit der exakt gleichen OFFSET Klausel als zweiten rowset sein.

könnte eine andere Idee, eine temporäre Tabelle zu erstellen. Verwenden Sie Ihre SELECT Anweisung, die temporäre Tabelle zu füllen. Dann können Sie SELECT COUNT(*) FROM tmpTable für Ihre erste rowset und SELECT * FROM tmpTable für Ihren zweiter verwenden.

Diese Frage beruht auf mehreren falschen Annahmen und eine veraltete Aussage.

Zunächst einmal nicht verwechseln Anzahl von betroffen und ausgewählt Reihen. PDO unterstützt die ehemalige sogar zurück in '09.

Apropos Anzahl der Zeilen, die von SELECT-Anweisung zurückgegeben - Sie müssen nur diese Zahl nicht. Die Daten, die Sie haben, ist genug.

Und ja, heutzutage rowCount() unterstützt Anzahl der Zeilen von mysql ausgewählt als auch. Aber auch hier -. Sie brauchen nicht diese Zahl in einer durchschnittlichen Web-Anwendung ohnehin

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top