Fehlermeldung bei mySQL-class von Benny

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

  • Fehlermeldung bei mySQL-class von Benny

    Moin. Ich bin derzeit drüber mich in die OOP von PHP reinzudenken und habe deswegen mal das Tutorial von Benny mit der mySQL - Class ausprobiert. Allerdings spuckt mit der Parser nen Fehler aus, den ich bis jetzt nicht in der Lage war zu beheben.
    PHP-Code:
    $link = new mysqllink();
    class 
    mysqllink
    {
        var 
    $db_host const_db_host;
        var 
    $db_name const_db_name;
        var 
    $db_user const_db_user;
        var 
    $db_pass const_db_pass;
        var 
    $db_port const_db_port;

        function 
    db_connect()
        {
            
    $this->link = @mysql_connect($this->db_host.':'.$this->db_port,$this->db_user$this->db_pass)
                   or die(
    "{connect} Datenbankfehler: ".mysql_errno()." :".mysql_error());
            
    $this->select_database = @mysql_select_db($this->db_name$this->link
                   or die(
    "{select_db} Datenbankfehler: ".mysql_errno()." :".mysql_error());
        }
        
        function 
    db_close()
        {
            
    $this->link mysql_close();
        }
        
        function 
    db_query($querystr)
        {
            if(
    $this->link == false)
            {
                
    $this->db_connect();
            }
            if(
    $this->link == false
            {
                return;
            }
            
    $res mysql_query($querystr$this->link
                     or die(
    "{query} Datenbankfehler : ".mysql_errno()." : ".mysql_error());
            return 
    $res;
        }
    //end of class 
    Notice: Undefined property: mysqllink::$link in g:\wamp\www\test\inc\db_class.php

    Und zwar fliegt er bei der Methode Query raus, wenn er die erste if-Abfrage bearbeitet. Ich tu mich leider noch ziemlich schwer mit OOP-Programmierung, deswegen hoff ich mir kann jemand weiter helfen.


    PHP-Code:
    $anfrage $link->db_query("SELECT user_id, user_name, user_password
                                FROM kc_user 
                                WHERE user_name = '"
    .$_POST['login_username']."';"); 
    Hier ist auch nochmal der Aufruf der Query-Methode, falls ich da einen Fehler haben sollte.

    In diesem Sinne möchte ich auch noch eine Frage loswerden:

    PHP-Code:
            if($this->link == false)
            {
                
    $this->db_connect();
            }
            if(
    $this->link == false
            {
                return;
            } 
    Bei diesem Codeausschnitt aus der Methode db_query habe ich zweimal hintereinander eine identische Anfrage. Ich laufe in die erste Schleife, stelle fest das ich noch keinen Wert auf $link liegen habe und starte die Methode db_connect. In der unteren Schleife prüfe ich nochmal ob ich nun eine Verbindung habe oder? Aber eigentlich ist diese doch sinnlos, weil wenn ich keine Verbindung habe, fliege ich doch eh bei db_connect schon mit einer Fehlermeldung raus oder nicht?
    Zuletzt geändert von virusse; 17.01.2005, 11:12.

  • #2
    die Klasse hat keine Variable $link, demnach kannst du der nicht vorhandenen Variable in $query weder was zuweisen, noch was abrufen, genauso in close, connect dürfte demnach auch eigentlich nicht richtig funktionieren...

    btw. wieso lernst du Klassenhandling noch in der Version4? Wenn du dich wirklich mit OOP beschäftigen willst, schnapp dir PHP Version 5 und das Tutorial hier
    http://www.coding.at/tutorials.php?id=6&sid=
    (meines ) und verschwende deine Zeit nicht mit dem Lernen von mehr oder weniger schnell Nutzlosen....


    ^^=Meine Meinung!

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      PHP-Code:
      $link = new mysqllink();
      class 
      mysqllink
      {
          ....

      Das heißt also das die Zuweisung innerhalb der "Klassen-Datei" so also nicht funzt? Das würde dann heißen das diese mySQL-Klasse von Benny also gar nicht funktionieren kann. Ich habe sie ziemlich 1:1 abgeschrieben und nur einige Variablen mal geändert.

      Kommentar


      • #4
        mach mal so:
        PHP-Code:
        class mysqllink
        {
            var 
        $link NULL;
            var ...

        ...

        dann sollte funz.

        btw: du sollst dich dringend über Klassen in PHP informieren. Abschreiben nützt dir gar nicht, wenn du noch nicht mal weißt, wie man eine Klasse implementiert.

        Kommentar


        • #5
          Jaja das mach ich ja. Ich brauche die Klasse eigentlich nicht, aber ich wollte sie mir als Beispiel her nehmen. Fress mich gerade durch ghostgamblers Tutorial.
          An Beispielen seh ich eher den Sinn. Allerdings solltet ihr vielleicht mal das Tutorial überarbeiten, wenn es so nicht funktioniert. Nicht das noch mehr so Leute wie ich so dämliche Fragen stellen.

          So wie ich das sehe hat Benny das Objekt $connection definiert, was bei mir $link heißt und greift dann aber in der Klasse darauf zu, weil $Connection wird nur einmal außerhalb deklariert in dem es die Eigeschaften von mysqlconnection erbt und dann nicht wieder.
          Zuletzt geändert von virusse; 17.01.2005, 12:43.

          Kommentar


          • #6
            Hallo ich habe ebenfalls bennys Turi ausprobiert




            {connect} Database Error: 1045 : Access denied for user: 'wwwrun@localhost' (Using password: YES)




            Bin Anfänger


            Habe alles 1 zu eins so gemacht, funktioniert nicht woran liegt der fehler?


            habe nach 1 Stunde testen erst diesen beitrag gefunden, wenn das turi wirklich so nicht funktioniert ist das sehr frustrierend für anfänger.


            Bitte helft mir das sollte mein erstes PHP script werden.

            Gruß

            Kommentar


            • #7
              @Timecop Du hast ungültige Login Daten angegeben.
              h.a.n.d.
              Schmalle

              http://impressed.by
              http://blog.schmalenberger.it



              Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
              ... nur ohne :-)

              Kommentar


              • #8
                In welchen bereich... habe ich falsche daten angegeben ?

                habe alles genauso wie im turi gemacht.

                Siehe hier http://www.php-resource.de/tutorials/read/40/1/


                Die verbindungsdaten sind auch ok, verstehe ich nicht mist.....


                <?
                $host = "localhost"; // MySQL Hostname
                $database = "datenbankname"; // MySQL Database
                $db_username = "bla"; // MySQL Username
                $db_pass = "blabla"; // MySQL Password


                define(dbHost, $host);
                define(db, $database);
                define(dbUser, $db_username);
                define(dbPass, $db_pass);

                ?>


                Gruß
                EDIT:
                Logindaten entfernt/geändert, sei bitte zukünftig vorsichtiger. edited by asp2php.
                Zuletzt geändert von asp2php; 10.02.2005, 12:22.

                Kommentar


                • #9
                  Hmm, evtl. funktioniert define() auf deinem Server nicht. Schreibe die Logindaten einfach mal direkt in die Class.
                  h.a.n.d.
                  Schmalle

                  http://impressed.by
                  http://blog.schmalenberger.it



                  Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
                  ... nur ohne :-)

                  Kommentar


                  • #10
                    danke für den tipp aber die waren schon verändert.

                    kannst du mir auch helfen ?

                    Gruß

                    Kommentar


                    • #11
                      hat der User auch entsprechende Rechte? schon mal mit dem User: root probiert?

                      Kommentar


                      • #12
                        habe ich auch schon probiert nichts...

                        die datenbank ist aber ok.


                        Gruß

                        Kommentar


                        • #13
                          Original geschrieben von asp2php
                          hat der User auch entsprechende Rechte? schon mal mit dem User: root probiert?
                          root habe ich probiert nichts........


                          Gruß

                          Kommentar


                          • #14
                            versuch mal die Logindaten direkt in die Klasse anstatt Konstante einzutragen:
                            PHP-Code:
                            class mysqlconnection{

                                var 
                            $host 'localhost';
                                var 
                            $database 'database_name';
                                var 
                            $db_username 'root';
                                var 
                            $db_pass 'password';
                                var 
                            $db_port '3306';
                            ... 
                            Zuletzt geändert von asp2php; 10.02.2005, 12:35.

                            Kommentar


                            • #15
                              direkt in die database_class habe ich mit und ohne jede variation.


                              funktioniert das tut überhaupt so wie abgebildet, kann das nicht mal ein profi schecken.


                              danke für eure zeit und hilfe

                              Kommentar

                              Lädt...
                              X