phpbar.de logo

Mailinglisten-Archive

[php] =?ISO-8859-1?Q?Re=3A_=5Bphp=5D_ODBC=5FZeilen_z=E4hlen?=

[php] Re: [php] ODBC_Zeilen zählen

Gloss Mathias php_(at)_phpcenter.de
Thu, 1 Nov 2001 12:09:04 +0100


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