PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit PHP - ODBC


blax
2006-02-19, 19:10:09
HI,
ich habe ein Problem beim Zählen der Reihen mit ODBC. (Also z.b. mit direkten mysql-Funktionen mysql_num_rows($result))

Für ODBC benötige ich die Funktion odbc_num_rows($result). Allerdings funktioniert die nicht (Sie liefert meistens -1 zurück. "Meistens" deshalb, weil aufgrund von mir unerklärlichen Dingen manchmal das richtige Ergebnis rauskommt).

Ich habe ein bisschen recherchiert und habe herausgefunden, dass es mit dieser Funktion bei sehr vielen Leuten Probleme gibt.

Jetzt stehe ich da und weiß nicht wie ich - damn - die Anzahl meiner Zeilen herausbekommen kann (via SELECT geholten).

Die einzige Lösung die ich gefunden hab, ist mit der Funktion odbc_result_all zu arbeiten, die mir zwar die Anzahl der Zeilen RICHTIG zurückgibt, aber leider nebenbei das gesamte $result ausgibt :(

$number_rows=odbc_result_all($result);

Ich wäre dankbar wenn mir jemand helfen könnte :)


lg, Sevi

Expandable
2006-02-19, 22:25:49
SELECT COUNT(*) AS count FROM *table* WHERE *WHERECLAUSE* usw.

Dann zählt die Datenbank für Dich. Ist wahrscheinlich eh schneller, als wenn PHP das Array zählt.

PS: So funktioniert das mit MySQL. Ich schätze aber, das dürfte Standard-SQL sein (keine Garantie...)

blax
2006-02-19, 22:50:19
Naja,
Das ist eh genau das was ich will (Die Datenbank zählen lassen).
Genau das macht nämlich auch odbc_num_rows($result);
Das $result ist in dem Fall nur ein Zeiger auf die Einträge in der Datenbank (Da werden noch keine Daten von der Datenbank auf den WebServer übertragen. Das würde bei einer Abfrage von 10000000 Datensätzen auch zu lange dauern)


Dass PHP zählt will ich eh nicht.


Das Problem, dass ich mit "SELECT COUNT(*) AS count FROM table" habe, ist, dass das in komplexeren Abfragen nicht funktioniert (oder ich zu blöd dazu bin :)) Beispiel, das bei mir NICHT FUNKTIONIERT:

SELECT hund.name,besitzer.name
FROM hund,besitzer, COUNT(hund)
GROUP BY besitzer
WHERE hund.farbe='schwarz'


Wenn ich Abfragen in dieser Art mit ODBC zum laufen bringen würde währ ich mehr als glücklich :)

Expandable
2006-02-19, 23:24:12
odbc_num_rows($res) ist doch kein Befehl, die Datenbank zählen zu lassen? $res ist doch ein Handler auf ein Result-Set, das Du vorher aus der Datenbank per Select ausgelesen hast. PHP zählt dann das Array einfach durch. Zumindest verstehe ich die PHP-Dokumentation so.

Dein Query ist ja auch falsch. Das COUNT(hund) muss nach SELECT und vor FROM kommen - es ist ja ein Wert, den Du auslesen (bzw. berechnet haben) willst, keine Tabelle!