odbc_num_rows

kesnw

Erfahrenes Mitglied
Hallo,

folgendes Statement funktioniert:

PHP:
$result=odbc_exec($verbindung_intern,"SELECT * FROM table ORDER BY statement");
echo odbc_num_rows($result);

Ergebnis ist 7 und ist korrekt.

Aber:

PHP:
$result=odbc_exec($verbindung_intern,"SELECT * FROM table WHERE statement ORDER BY statement");
echo odbc_num_rows($result);

Ergebnis ist -1. Obwohl 1 rauskommen müsste.

Habe gelesen, dass odbc_num_rows nicht richtig funktioniert und -1 als Zeilenanzahl liefert. Aber warum dann so? Ohne where gehts, mit where nicht. Die Abfrage ist korrekt!
 
Auszug aus der aktuellen PHP-Hilfe:
Beschreibung
int odbc_num_rows ( int result_id)


odbc_num_rows() liefert die Anzahl Zeilen eines ODBC-Abfrageergebnisses. Tritt ein Fehler auf, ist sie -1. Bei INSERT, UPDATE und DELETE-Befehlen wird die Zahl der betroffenen Zeilen zurückgegeben. Bei einer SELECT-Abfrage kann dies die Anzahl der vorhanden Zeilen sein.

Anmerkung: Bei vielen Treibern wird -1 als Anzahl möglicher Zeilen nach einem SELECT-Befehl zurückgeliefert.
Anderen ODBC-Treiber ausprobieren oder das Ergebnis mit PHP zählen, wäre mein Vorschlag.
 
Nur falls es jemanden interessiert:

Im ORDER BY statement darf nicht sortiert werden was selektiert wird. DANN FUNKTIONIER odbc_num_rows() KORREKT

Sollte jemand ein sql-statement finden, das dieser Aussage widerspricht bitte sofort posten!
 
Ob das wirklich stimmt weiß ich nicht, denn ich habe eben folgendes Statement erfolgreich probiert:
Code:
SELECT * FROM `angebot` WHERE user_id='15' ORDER BY 'user_id'
Obwohl das nicht wirklich Sinn machen würde, denn ich bekommen ja nur die Ergebnisse für die user_id "15", dann brauche ich die Ergebnisse ja nicht noch nach der user_id zu sortieren.
Aber funktionieren tut es trotzdem!

redlama
 
Zurück