Fehler in Klasse

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

  • Fehler in Klasse

    Hallo,

    ich bekomme folgenden Fehler:

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Arbeit\localhost\localhost\shop\lib\class_mysql.php on line 21
    Beim Auslesen per mysql_fetch_array ist ein Fehler aufgetreten!

    ----------------------

    In der index.php steht:

    PHP-Code:
    <?php
      
    require("./lib/class_mysql.php");
      
    $db = new MYSQLDB;
      
    $db->conn("localhost","user","pass","datenbank");
      
    $query $db->query("SELECT * FROM tabelle WHERE id='1'");
      
    $result $db->fetch_array($query);
      echo 
    $result[0];
    ?>
    und in der class_mysql.php steht:

    PHP-Code:
    <?php
      
    class MYSQLDB{
        var 
    $server = array();
        var 
    $db;
        
        function 
    conn($localhost,$dbuser,$dbpass,$dbname){
          
    $this->server['localhost'] = $localhost;
          
    $this->server['dbuser'] = $dbuser;
          
    $this->server['dbpass'] = $dbpass;
          
    $this->server['dbname'] = $dbname;
          
    $this->db mysql_connect($this->server['localhost'],$this->server['dbuser'],$this->server['dbpass']) or $this->mysql_fehler(1);
          
    mysql_select_db($this->server['dbname'],$this->db) or $this->mysql_fehler(2);
        }
        
        function 
    query($sql,$limit=1,$begin=1){
          if(
    $limit >= 2$sql.=" LIMIT $begin,$limit";
          return 
    mysql_query($sql,$this->db) or $this->mysql_fehler(0);
        }
        
        function 
    fetch_array($query){
          return 
    mysql_fetch_array($query) or $this->mysql_fehler(3);
        }
        
        function 
    fetch_object($query){
          return 
    mysql_fetch_object($query) or $this->mysql_fehler(4);
        }
        
        function 
    num_rows($query){
          return 
    mysql_num_rows($query) or $this->mysql_fehler(5);
        }
        
        function 
    mysql_fehler($ziffer){
          switch(
    $ziffer){
            CASE 
    0: die("<b>Es ist ein Fehler bei einer MySQL-Abfrage aufgetreten!</b><br>".mysql_error()); break;
            CASE 
    1: die("<b>Die MySQL-Verbindungsdaten stimmen nicht!</b>"); break;
            CASE 
    2: die("<b>Die angegebene Datenbank existiert nicht!</b>"); break;
            CASE 
    3: die("<b>Beim Auslesen per mysql_fetch_array ist ein Fehler aufgetreten!</b><br>".mysql_error()); break;
            CASE 
    4: die("<b>Beim Auslesen per mysql_fetch_object ist ein Fehler aufgetreten!</b><br>".mysql_error()); break;
            CASE 
    5: die("<b>Die angegebene Datenbank existiert nicht!</b>"); break;
            default: die(
    "<b>Es ist ein MySQL-Fehler aufgetreten<br>Fehler:</b>&nbsp;".mysql_error()); break;
          }
        }
      }
    ?>

    Das ist eigentlich so kurz und gut, dass da kein Fehler existieren dürfte!
    Aber woran liegt es? Ich tüfftel schon seit gestern Abend da drann rumm und bekomm nix zustande.

    Vielen Dank

  • #2
    du solltest mal in der mysqlclass den defaultwert für $begin in der methode query von 1 auf 0 setzen.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      mysql_error kennst du aber schon???

      Kommentar


      • #4
        wofür machst du das eigentlich Reichen den die
        Fehlermeldung von Parser und mysql_error() nicht aus? oder
        willst du nur deutsche Fehlermeldung damit simulieren?

        Kommentar


        • #5
          @Abraxas: im script editiert. danke.

          @Tobiaz: Ja, mysql_error() kenn ich schon. is ja auch eingebaut

          @asp2php: Nuja, ich wollt die Fehlermeldungen etwas genauer bestimmen & eindeutschen. Aber darin liegt doch nicht der Fehler!

          die function mysql_fehler() habe ich aus nem anderen Script (von mir!!!) rauskopiert. Somit liegt dort kein Fehler (denn es funktioniert fehlerfrei).

          Vielleicht isses etwas dumm, des direkt in return reinzuschreiben, aber da liegt doch eigentlich auch kein fehler!

          Der Fehler müsste bei query entstehen, kommt aber erst bei fetch_array, fetch_objects und num_rows.

          Habe jetzt mal rummgetestet und der Fehler hängt definitiv mit der query-abfrage zusammen!
          Die Daten in der db existieren! Die Connection stimmt auch, wo ist nur dieser dumme Fehler?

          Kommentar


          • #6
            Der Fehler müsste bei query entstehen
            deswegen mein Hinweis!!!

            Kommentar


            • #7
              hi,

              jepp: ... or mysql_fehler(0);

              mysql_fehler(0): CASE 0: die("<b>Es ist ein Fehler bei einer MySQL-Abfrage aufgetreten!</b><br>".mysql_error()); break;

              mysql_error(): Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Arbeit\localhost\localhost\shop\lib\class_mysql.php on line 21

              Kommentar


              • #8
                NEE!

                glaube kaum, dass die Ausgabe von mysql_error() kommt.

                Kommentar


                • #9
                  Hi Tobiaz,

                  die Ausgabe des Fehlers kommt nicht vom Query, da haste Recht! Sie kommt von: fetch_array oder fetch_object oder num_rows. Je nachdem, welches man nimmt.

                  die function query arbeitet ohne Fehler durch. Der Fehler tritt dann erst bei dem Aufruf einer der oben genannten functionen auf.

                  aber diese eine Zeile Code enthält einfach keinen Fehler, oder überseh ich da die ganze zeit etwas?

                  Kommentar


                  • #10
                    die function query arbeitet ohne Fehler durch
                    NEIN!!! Nur weil kein Fehler ausgegeben wird, heißt es nicht, dass es keinen Fehler gibt. Wozu meinst du ist mysql_error() da

                    Kommentar


                    • #11
                      ok,

                      jetzt mal ganz langsam:

                      a) mysql_error() = ist zur rückgabe eines fehlers da, gezielte ausgabe, wo der fehler liegen sollte

                      b) aber ich wende doch bei mysql_query das mysql_error auch an. somit müsste (!) doch ein fehler ausgegeben werden! wo soll ich des denn noch anwenden?

                      Kommentar


                      • #12
                        mach mal so:

                        PHP-Code:
                        function query($sql,$limit=1,$begin=1){
                              if(
                        $limit >= 2$sql.=" LIMIT $begin,$limit";

                        $res mysql_query($sql,$this->db);

                        if(!
                        $res)
                          return 
                        mysql_error();

                        return 
                        $res
                            

                        Kommentar


                        • #13
                          Hi,

                          ich glaub, ich dreh hohl.
                          Jetzt funktioniert es! WARUM?

                          braucht des einfach mehr zeit oder warum sollte man des in zwei schritten machen?

                          Kommentar


                          • #14
                            vermutlich weil mein code ordentlich ist, und deiner nicht! Ganz einfach. Erwarte jetzt bitte nicht, dass ich deinen Code nachvollziehe. Bis jetzt sieht es mir nur nach ner (eher falschen) Alias-Klasse ohne wirklichen Mehrwert aus.

                            Kommentar

                            Lädt...
                            X