mysql_num_rows liefert Fehler bei leerem ResultSet

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • mysql_num_rows liefert Fehler bei leerem ResultSet

    Nabend,

    hab ein Problem (siehe Überschrift), weiss einer von euch etwas dazu ???

    Sind Daten im ResultSet läuft's einwandfrei, nur wenn's leer ist fliegt er raus. Ne Fehlermeldung gibt's auch nicht, mysql_errno() liefert '0' und mysql_error() liefert ' '.

    Danke,

    Ultra
    Zuletzt geändert von Ultra; 08.03.2003, 00:57.

  • #2
    Haben wir vielleicht ein Stück Quellcode??
    carpe noctem

    [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
    [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

    Kommentar


    • #3
      Jepp,

      den gibt's auch ...

      PHP-Code:
            function fetchResultSet ($queryStatement) {

                     if (! 
      is_null($this->connection)) {
                        
      array_push($this->errors"Eine alte Datenbankerbindung ist noch aktiv !");
                     }

                     if (! 
      $this->isErroneous()) {
                        if (! 
      is_null($queryStatement)) {
                           if (! 
      $this->isConnected) {
                              
      $this->connect();
                           }

                           if (
      $this->isConnected()) {
                              
      $this->resultSet = @mysql_query($queryStatement$this->connection)
                              or 
      array_push($this->errorsmysql_errno() . ":" mysql_error());
                           }
                        } else {
                          
      array_push($this->errors"Statement ist NULL !");
                        }
                     }
            }
            

            function 
      fetchArray ($queryStatement) {

                     
      $this->fetchResultSet($queryStatement);
                     
                     if (! 
      $this->isErroneous()) {
                        
      $count = @mysql_num_rows($this->resultSet)
                                 or 
      array_push($this->errorsmysql_errno() . ":" mysql_error());

                        if (! 
      $this->isErroneous()) {
                           for (
      $actIndex 0$actIndex $count$actIndex++) {
                              
      $curResult = @mysql_fetch_row($this->resultSet)
                                           or 
      array_push($this->errorsmysql_errno() . ":" mysql_error());

                              if (! 
      $this->isErroneous()) {
                                 
      array_push($this->resultArray$curResult);
                              } else {
                                 break;
                              }
                           }
                           
                           if (! 
      $this->isErroneous()) {
                               @
      mysql_free_result($this->resultSet)
                               or 
      array_push($this->errorsmysql_errno() . ":" mysql_error());
                           }
                        }
                              
                        
      $this->disconnect();
                     }
            } 
      Die fetchResultSet läuft auch noch ohne Probleme durch, nur bei dem mysql_num_rows() knallts....

      Grüße,

      Ultra.

      Kommentar


      • #4
        Was verstehst Du unter "es knallt"??
        carpe noctem

        [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
        [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

        Kommentar


        • #5
          In der Methode fetchArray() nach Aufruf der Methode fetchResultSet() geprüft, ob während der Operation Fehler aufgetreten sind.

          PHP-Code:
          $this->fetchResultSet($queryStatement);
                         
                         if (! 
          $this->isErroneous()) { 
          Ist dies nicht der Fall (wie auch bei leerem ResultSet, will sagen er durchläuft die Methode sauber), wird die Anzhal der ermittelten Datensätze ausgelesen.

          PHP-Code:
          $count = @mysql_num_rows($this->resultSet)
                                     or 
          array_push($this->errorsmysql_errno() . ":" mysql_error()); 
          Hier tritt der Fehler auf, ersetze ich den array_push() durch ein die() mit Ausgabe FehlerNr und Text, stoppt das Skript an dieser Stelle und gibt Nr.: 0 und Text ' ' aus.

          Das meinte ich mit 'knallt'.

          Grüße, Ultra.

          Kommentar


          • #6
            @mysql_num_rows($this->resultSet)

            gibt doch 0 (in Worten Null) als ergebnis zurück ... 0 entspricht in einem logischen Ausdruck den Wert FALSE ... alles ungleich 0 ist TRUE ...

            Das beschriebene Verhalten ist dementsprechende doch vollkommen OK ... ein Datenbankfehler ist nicht aufgetreten ... also liefert mysql_errno() := 0 und mysql_error() := "" ...
            carpe noctem

            [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
            [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

            Kommentar


            • #7
              Aah,

              *groschenFällt*

              ich glaub ich hab's, klar liefert logisch falsch und die oder Bedingung greift.



              Soweit hab ich garnet gedacht.

              Dank Dir,

              Ultra.

              P.S.: Ist es überhaupt notwendig bei mysql_num_rows mit '@' und 'or' zu arbeiten ?

              Kommentar


              • #8
                Ich verwende übhaupt keine @'s ... im normalfalle sollte man seine Codes eh so schreiben das man über Fehlerquellen die Kontrolle hat ...

                Beispiel:

                Habe ich eine Query durchgeführt sollte im Normalfall prüfen ob ein ResultSet zurückgeliefert wurde ... ist dieses der Fall gibt's auf keinen Fehler beim Aufruf von mysql_num_rows(), mysql_fetch_array(), ... oder ähnlichem ...

                PHP-Code:
                if ( $res=mysql_query($statement) ) {
                    while ( 
                $row mysql_fetch_object($res) ) {
                    
                        
                // Mach daraus Wurst ...
                        
                    
                }
                    
                mysql_free_result($res);
                } else die(
                "ERROR[".mysql_errno()."] ".mysql_error()); 
                läuft auch ohne @ und Fehler ...
                carpe noctem

                [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                Kommentar


                • #9
                  Oki,

                  dank Dir, werd den Code dann nochmal überarbeiten.

                  Gruß,

                  Ultra.

                  Kommentar

                  Lädt...
                  X