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