Willkommen Gast. Bitte anmelden oder registrieren.

Autor Thema: Anzahl gefundener Datensätze mit getNumRows() ermitteln  (Gelesen 1936 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Firstlady

  • Pink Berserk (Mod)
  • Beiträge: 190
    • www.chmst.de
Eine Frage an die Joomla-Programmierer: Setzt jemand die Methode getNumRows() ein? Wenn ja, wie?
Ich komme da nicht zu einem Ergebnis. ich habe eine Query und bekomme mit

$result = $db->loadObjectList($query) ein array von Objekten. Ich möchte wissen, wie viele es sind. Mit count($result) bekomme ich das einfach genug.

Es gibt aber eine Methode
getNumRows()  - Get the number of returned rows for the previous executed SQL statement.

Eigentlich erwarte ich, dass diese Methode mir die Anzahl der gefundenen Objekte gibt. Tut sie aber nicht.
Nach jedem Zugriff auf die Datenbank wird ein       
// Free up system resources and return. $this->freeResult($cursor);

durchgeführt, damit ist das Ergebnis ja praktisch weg. Nun frag ich mich, wie setzt ihr diese Methode ein?

« Letzte Änderung: 02. Juni 2014, 14:21:25 von Firstlady »
Grüße, Christiane

Re:Later

  • Bestätigter Nutzer
  • Beiträge: 3
Antw: Anzahl gefundener Datensätze mit getNumRows() ermitteln
« Antwort #1 am: 26. Juni 2014, 12:04:47 »
Wusst ich auch noch nicht. Siehe
http://docs.joomla.org/Selecting_data_using_JDatabase#Miscellaneous_Result_Set_Methods

Also
$db->getNumRows();
immer vor dem
$db->loadXYZ();
laufen lassen.

Firstlady

  • Pink Berserk (Mod)
  • Beiträge: 190
    • www.chmst.de
Antw: Anzahl gefundener Datensätze mit getNumRows() ermitteln
« Antwort #2 am: 26. Juni 2014, 12:56:44 »
Tatsächlich - darauf wäre ich nicht gekommen. Ich habe den doc-block gelesen und dort heisst es
"Get the number of returned rows for the previous executed SQL statement".
Nicht "of the statement which is to be executed".

Ich seh da den einen Vorteil, dass man schon vorher sicherstellen kann, ein Ergebnis zu bekommen, und sich ggf. das loadResult sparen kann. Aber ob das dann performant ist?
Grüße, Christiane

Harmageddon

  • Bestätigter Nutzer
  • Beiträge: 23
    • ZweiIconKram
Antw: Anzahl gefundener Datensätze mit getNumRows() ermitteln
« Antwort #3 am: 26. Juni 2014, 13:25:18 »
"Executed" wird es ja schon mit setQuery, unabhängig davon, ob du das Ergebnis jetzt irgendwie verarbeitest oder einfach liegen lässt. Dass getNumRows vor loadResult stehen muss, wusste ich aber auch noch nicht. Aber warum das so ist, verstehe ich gerade auch nicht so ganz...
Vielleicht ist das Ergebnis der Abfrage nach loadResolut nicht mehr in der passenden Form "zwischengespeichert".

Firstlady

  • Pink Berserk (Mod)
  • Beiträge: 190
    • www.chmst.de
Antw: Anzahl gefundener Datensätze mit getNumRows() ermitteln
« Antwort #4 am: 26. Juni 2014, 14:12:27 »
Ich dachte, das execute kommt erst beim load.. das erklärt es also, danke.

Zitat
Vielleicht ist das Ergebnis der Abfrage nach loadResolut nicht mehr in der passenden Form "zwischengespeichert".

Schau in /../database/driver.php. Da kommt nach jedem load...() am Ende $this->freeResult($cursor);
Damit ist alles weg.


Grüße, Christiane