Mailinglisten-Archive |
Hallo, > Von: Jan Broermann[SMTP:jabro_(at)_cabro.com] > > Hallo Liste, folgende Problematik: > Aus php4 heraus (apache) habe ich folgenden Befehl: > > $reihe=odbc_num_rows ($zeile); > ich brauche die Anzahl der Datensätze/ Zeilen. Er gibt mir -1 raus. > Korrekt wäre aber 2, da 2 Datensätze mit dem Select Kriterium = existieren. > Dazu steht im PHP manual: > Anmerkung: Bei vielen Treibern wird -1 als Anzahl möglicher Zeilen > nach einem SELECT-Befehl zurückgeliefert. > > Frage wie komme ich nun zu meiner Anzahl Datensätze? Ich sollte = noch > dazu sagen es ist keine MySQL Datenbank. > das liegt an den Verwendeten ODBC-Treibern. Teilweise liefern sie auch mal die Anzahl, mal nicht.... je nachdem ob die Ergebnisse komplett in einen Puffer passen. In der PHPLIB gibts dafür eine emulation ... bei affected_rows scheint das zu klappen (Anzahl der upgedateten / geinserteten Spalten) function affected_rows() { return odbc_num_rows($this->Query_ID); } function num_rows() { # Many ODBC drivers don't support odbc_num_rows() on SELECT statements. $num_rows = odbc_num_rows($this->Query_ID); //printf ($num_rows."<br>"); # This is a workaround. It is intended to be ugly. if ($num_rows < 0) { $i=10; while (odbc_fetch_row($this->Query_ID, $i)) $i*=10; $j=0; while ($i!=$j) { $k= $j+intval(($i-$j)/2); if (odbc_fetch_row($this->Query_ID, $k)) $j=$k; else $i=$k; if (($i-$j)==1) { if (odbc_fetch_row($this->Query_ID, $i)) $j=$i; else $i=$j; }; //printf("$i $j $k <br>"); }; $num_rows=$i; } return $num_rows; } Vielleicht kannst du dir dafür eine eigene Funktion schreiben, die ca. das da oben enthält. Viele Grüße, Mathias
php::bar PHP Wiki - Listenarchive