[Bug] MySQL-Klasse in anderer Klasse nutzen

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

  • [Bug] MySQL-Klasse in anderer Klasse nutzen

    Grüße!

    Ich habe eine eigene MySQL-Klasse geschrieben, die auch wunderbar funktioniert.
    Nun bin ich ein kleiner "Statistik-Fetischist" und wollte mir gern PHP- und MySQL-Generierungszeiten anzeigen lassen.
    Das funktioniert ebenfalls wunderbar, bis auf eine Kleinigkeit: die Anzahl der Queries. - Hier gibt's irgendwie einen Bug und ich sitze jetzt schon 2 Wochen dran und habe alles Mögliche probiert, aber es will einfach nicht!

    Grundsätzlich funktioniert der Queries-Zähler schon, das ist nicht das Problem.
    Allerdings habe ich noch einige für mich sehr nützliche Funktionen, die sich in einer 2. Klasse befinden und in dieser Klasse nutze ich ALLE Funktionen, die ich in der 1. Klasse habe.
    Nun ist es bekannt, dass man via "extends" einer 2. Klasse die Funktionen einer anderen Klasse übergeben kann - nur genau hier kommt der Bug ins Gespräch: der Queries-Zähler (und eventuell auch der MySQL-Generation-Counter, kann das ja schlecht stoppen ) streikt und zählt nicht!

    Bitte helft mir, ich bin wirklich vollends verzweifelt...


    Quellcode von Klasse 1:
    PHP-Code:
    class mysql
    {
        var 
    $database 'DB_NAME';
        var 
    $hostname 'localhost';
        var 
    $username 'my_user';
        var 
    $password 'my_pass';

        function 
    open()
        {
            
    $this->open mysql_connect($this->hostname$this->username$this->password);

            if (!
    $this->open)
            {
                echo 
    "MySQL-Error #: " mysql_errno() . "\n<br />\nMySQL-Error: " mysql_error();
            }

            
    $this->select mysql_select_db($this->database);

            if (!
    $this->select)
            {
                echo 
    "MySQL-Error #: " mysql_errno() . "\n<br />\nMySQL-Error: " mysql_error();
            }

            return 
    $this->open;
            return 
    $this->select;
        }

        function 
    query($dbQuery)
        {
            global 
    $sql_queries;
            global 
    $sql_gentime;

            
    $sql_starttime microtime();
            
    $this->query mysql_query($dbQuery);
            
    $sql_endtime microtime();

            !isset(
    $sql_queries) ? $sql_queries '0' $sql_queries++;
            !isset(
    $sql_gentime) ? $sql_gentime '0.000' $sql_gentime round(
    (
    $sql_endtime $sql_starttime), 3) + $sql_gentime;

            if (
    $this->query == false)
            {
                echo 
    "MySQL-Error #: " mysql_errno() . "
                     <br />
                     MySQL-Error: " 
    mysql_error() . "
                     <br />
                     MySQL-Query: " 
    $dbQuery;
            }

            return 
    $this->query;
        }

        function 
    fetch($fetchQuery)
        {
            
    $fetchQuery == $this->fetch mysql_fetch_array($this->query) : $this->fetch =
    mysql_fetch_array($fetchQuery);

            return 
    $this->fetch;
        }

        function 
    num_rows($rowsQuery)
        {
            
    $rowsQuery == $this->num_rows mysql_num_rows($this->query) : $this->num_rows =
    mysql_num_rows($rowsQuery);

            return 
    $this->num_rows;
        }

        function 
    shut()
        {
            
    $this->shut mysql_close($this->open);

            if (!
    $this->shut)
            {
                echo 
    "MySQL-Error #: " mysql_errno() . "\n<br />\nMySQL-Error: " mysql_error();
            }

            return 
    $this->shut;
        }
    }

    $mysql = new mysql

    Und hier nun der Quellcode der 2. Klasse, die die Funktionen der 1. Klasse nutzt:
    PHP-Code:
    class tools extends mysql
    {
        function 
    bbc($code)
        {
            
    // ...
        
    }

        {
            
    $this->open();
            
    $this->query("DELETE
                          FROM server_usage
                          WHERE time < " 
    . (time() - 86400));

            
    $this->query("INSERT
                          INTO server_usage (time, ip)
                          VALUES (" 
    time() . ", '" $_SERVER['REMOTE_ADDR'] . "')");

            
    $this->query("SELECT time
                          FROM server_usage"
    );
            
    $this->num_rows();
            
    $this->shut();

            return 
    $this->num_rows;
        }

        function 
    version()
        {
            
    $this->open();
            
    $build $this->fetch($this->query("SELECT VERSION()"));
            
    $this->shut();
            
    $this->version substr($build[0], 0, -4);

            return 
    $this->version;
        }
    }

    $tools = new tools(); 
    Zuletzt geändert von ; 26.02.2005, 21:07.

  • #2
    Re: [Bug] MySQL-Klasse in anderer Klasse nutzen

    falsche Kategorie, das gehört ins PHP Developer...


    PHP-Code:
    function open()
        {
            
    $this->open mysql_connect($this->hostname$this->username
    $this->password);

            if (!
    $this->open)
            {
                echo 
    "MySQL-Error #: " mysql_errno() . "\n<br />\n
    MySQL-Error: " 
    mysql_error() . "\n<br />\n<br />\n";
            }

            
    $this->select mysql_select_db($this->database);

            if (!
    $this->select)
            {
                echo 
    "MySQL-Error #: " mysql_errno() . "\n<br />\n
    MySQL-Error: " 
    mysql_error() . "\n<br />\n<br />\n";
            }

            return 
    $this->open;
            return 
    $this->select;
        } 
    Das doppelte return am Ende hat keinen Sinn, nach dem ersten Return ist die Funktion zuende, d.h. er kommt nicht bis zum zweiten return...


    PHP-Code:
    $this->query mysql_query($dbQuery); 
    Die Variable ist in der Klasse gar nicht deklariert, genauso wie einige anderen die du mit $this-> benutzt...


    Willst du die Querys aller Objekte in einer Variablen hochzählen, oder reicht es nicht, wenn du die Zahlen von jedem Objekt einzeln bekommst?


    btw. Zeilenumbruch in deinem PHP-Code fehlt!
    Waagrecht scrollen ist out >_<

    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
      Öhm, ich dachte, Brainstorming ist, wenn man weiß wie, nur der Lösungsansatz fehlt?!? - Weil hab mir die Forenbeschreibung durchgelesen und danach fand ich's besser in Brainstorming zu posten...

      Hmm, wie kann ich denn 2 Variablen gleichzeitig per return zurück geben lassen?
      PHP-Code:
      return $this->open$this->select
      So vielleicht?!?

      Ich weiß, dass die Variable nicht deklariert ist - nur komischerweise geht's trotdem... (register_globals = "0"!!!) O.o

      Ich möchte die exakte Anzahl, wie oft mysql_query() ausgeführt wird/wurde und wenn ich die Klasse "mysql" in der Klasse "tools" so nutze, wie es momentan der Fall ist, zählt er die Queries, die in der tools-Klasse ausfgeführt werden, nicht mit - und genau DAS möchte ich mit eurer Hilfe ändern, weil ich hab 2 Wochen rumgebastelt und es will trotzdem nicht!

      Ich weiß...

      Kommentar


      • #4
        Original geschrieben von Eagle
        Öhm, ich dachte, Brainstorming ist, wenn man weiß wie, nur der Lösungsansatz fehlt?!? - Weil hab mir die Forenbeschreibung durchgelesen und danach fand ich's besser in Brainstorming zu posten...
        Wenn du dir mal die Threads in den Kategorien angeschaut hättest (die Threadtitel hätten gereicht), wüsstest du es besser *hust*

        Hmm, wie kann ich denn 2 Variablen gleichzeitig per return zurück geben lassen?
        gar nicht?
        Du kannst höchstens überprüfen ob beide true sind und dann true zurückgeben, ansonsten eben false. Und wenn du es genauer willst, musst du noch ne Variable an die Funktion per Referenz übergeben, wo die Klasse dann ggf. eine Fehlermeldung reinschreibt.

        btw. würde ich es mal besser so versuchen:
        PHP-Code:
        function open()
            {
                
        $this->open mysql_connect($this->hostname$this->username
        $this->password);

                if (!
        $this->open)
                {
                    echo 
        "MySQL-Error #: " mysql_errno() . "\n<br />\n
        MySQL-Error: " 
        mysql_error();
                    return 
        false;
                }

                
        $this->select mysql_select_db($this->database);

                if (!
        $this->select)
                {
                    echo 
        "MySQL-Error #: " mysql_errno() . "\n<br />\n
        MySQL-Error: " 
        mysql_error();
                    return 
        false;
                }

                return 
        true;
            } 

        PHP-Code:
        return $this->open$this->select
        So vielleicht?!?
        kein Kommentar >_>

        Ich weiß, dass die Variable nicht deklariert ist - nur komischerweise geht's trotdem...
        Nur, weil PHP so weichherzig ist...

        (register_globals = "0"!!!) O.o
        Hat damit nur leider nichts zutun...

        Ich möchte die exakte Anzahl, wie oft mysql_query() ausgeführt wird/wurde und wenn ich die Klasse "mysql" in der Klasse "tools" so nutze, wie es momentan der Fall ist, zählt er die Queries, die in der tools-Klasse ausfgeführt werden, nicht mit - und genau DAS möchte ich mit eurer Hilfe ändern, weil ich hab 2 Wochen rumgebastelt und es will trotzdem nicht!
        Try this one:
        PHP-Code:
        <?php
            
        class mysql
            
        {
                static 
        $query_count;
                
                function 
        get_query_count()
                {
                    return 
        self::$query_count;
                }
                
                function 
        query()
                {
                    
        self::$query_count++;
                    return 
        true;
                }
            }
            
            class 
        tools extends mysql
            
        {
                function 
        query2()
                {
                    
        $this->query();
                    return 
        true;
                }
            }
            
            
        $tool = new tools();
            
        $tool2 = new tools();
            
            
        $tool->query2();
            
        $tool->query2();
            
            
        $tool2->query2();
            
        $tool2->query2();
            
            echo 
        $tool->get_query_count();
        ?>
        Gibt bei mir ne 4 aus, allerdings hab ich PHP5, ich weiß nicht ob das Schlüsselwort "static" in 4 schon funktioniert...
        Wenn es nicht funktioniert, geh und hole dir Version5, ist für OOP besser geeignet. Eben für solche Anwendunszwecke, wie du ihn grade hast, existiert nämlich das Schlüsselwort static, was eine Variable klassenweit zugänglich macht.


        Und bricht deinen verdammten Code um, nochmal sage ich es nicht...

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

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

        Kommentar


        • #5
          brainstorming ist hier 100% perfekt gewählt ...

          lasse mal das global raus. sowas hat in einer class nichts verloren.

          ausserdem solltest du den gesamtcounter in der basis-class definieren.
          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


          • #6
            Original geschrieben von ghostgambler
            Wenn du dir mal die Threads in den Kategorien angeschaut hättest (die Threadtitel hätten gereicht), wüsstest du es besser *hust*
            Wie gesagt, ich hab mich an die Forenbeschreibung gehalten und Abraxax gibt mir ja Recht, dass das richtig war...


            Original geschrieben von ghostgambler
            gar nicht?
            Du kannst höchstens überprüfen ob beide true sind und dann true zurückgeben, ansonsten eben false. Und wenn du es genauer willst, musst du noch ne Variable an die Funktion per Referenz übergeben, wo die Klasse dann ggf. eine Fehlermeldung reinschreibt.
            Es gibt in PHP keine Möglichkeit, 2 Funktionswerte zurückzugeben?!? Das kann doch gar nicht sein?!? O.o
            Wie dem auch sei, ich werd's mit deiner Variante probieren...


            Original geschrieben von ghostgambler
            kein Kommentar >_>
            Was soll mir dieser Smilie sagen?!?


            Original geschrieben von ghostgambler
            Nur, weil PHP so weichherzig ist...
            Möglich, aber vielleicht ist PHP genau deshalb so beliebt: es verzeiht kleinere Schnitzer...
            Aber okay, ich deklarier's als Variable direkt zu Beginn der Klasse, wo Username und Password deklariert sind...


            Original geschrieben von ghostgambler
            Gibt bei mir ne 4 aus, allerdings hab ich PHP5, ich weiß nicht ob das Schlüsselwort "static" in 4 schon funktioniert...
            Wenn es nicht funktioniert, geh und hole dir Version5, ist für OOP besser geeignet. Eben für solche Anwendunszwecke, wie du ihn grade hast, existiert nämlich das Schlüsselwort static, was eine Variable klassenweit zugänglich macht.
            Auf meinem Webserver sind noch andere Accounts und ich muss mit der installierten PHP-Version leben - zurzeit ist das 4.3.10 und PHP 5 wird's so schnell nicht auf dem Server geben... :-/

            Ansonsten bin ich dir zwar dankbar für deinen Code, aber 'ne kleine Erklärung was was in deinem Snippet tut, wär' echt hilfreich, denn in Sachen OOP bin ich zwar kein Anfänger, aber auch kein Profi - ich würd' mich selbst als "beginnenden Fortgeschrittenen" bezeichnen...


            Original geschrieben von ghostgambler
            Und bricht deinen verdammten Code um, nochmal sage ich es nicht...
            Wenn du mal direkt auf die Edit-Zeit meines 1. Posts siehst, würdest du bemerken, dass ich direkt im Anschluss an meine Antwort auf deinen Kommentar meinen 1. Post geändert habe und ich hab' in Mozilla mit AKTIVER Sidebar auch nur etwa 1000 Pixel Platz für die Websiten - und bei mir ist nix mit vertikalem Scrolling...
            Aber es gibt da so 'n Add-On in JavaScript, hat einer bei WebmasterPro im Forum mal geschrieben - das bettet Code als IFrame ein und hat so ein "+"-Zeichen vorne dran, was den Code normal darstellt (mit Scrollbalken im IFrame) oder halt ohne Scrollbalken und dafür eventuell das Layout "zerfetzend"...


            Original geschrieben von Abraxax
            brainstorming ist hier 100% perfekt gewählt ...

            lasse mal das global raus. sowas hat in einer class nichts verloren.

            ausserdem solltest du den gesamtcounter in der basis-class definieren.
            Danke, also war meine Überlegung doch richtig!

            Hmm, das mit dem "global raus" hab ich gemacht - allerdings bekomme ich dann keine Query-Generation-Time und auch keine Queries-Anzahl mehr zurück, da steht dann einfach nix, wo sonst die Zeit / Anzahl steht...
            Und warum hat das "global" da drin nix verloren?!?
            Ich denke, "global" macht Variablen auch außerhalb von Funktionen/Klassen verfügbar?!? O.o

            Was verstehst du unter "Gesamtcounter"?!?
            Zuletzt geändert von ; 27.02.2005, 01:12.

            Kommentar


            • #7
              Original geschrieben von Eagle
              Es gibt in PHP keine Möglichkeit, 2 Funktionswerte zurückzugeben?!? Das kann doch gar nicht sein?!? O.o
              Wie dem auch sei, ich werd's mit deiner Variante probieren...
              Naja, eine Möglichkeit gäbe es da.
              Du fasst 2 Variablen in einer zusammen, trennst sie durch ein Zeichen, dass 100% nicht in einer der Variablen vorkommt und danach ziehst du sie anhand des trennenden Zeichens wieder außeinander



              Original geschrieben von Eagle
              Ich denke, "global" macht Variablen auch außerhalb von Funktionen/Klassen verfügbar?!?
              Nein, nur IN Funktionen.

              Kommentar


              • #8
                Original geschrieben von Eagle
                Wie gesagt, ich hab mich an die Forenbeschreibung gehalten und Abraxax gibt mir ja Recht, dass das richtig war...
                persönliche Ansichtssache...hier helfen nicht soviele Leute wie in der anderen Kategorie!

                Es gibt in PHP keine Möglichkeit, 2 Funktionswerte zurückzugeben?!? Das kann doch gar nicht sein?!? O.o
                Wie dem auch sei, ich werd's mit deiner Variante probieren...
                Doch, als Array aber das willst du nicht haben!

                Auf meinem Webserver sind noch andere Accounts und ich muss mit der installierten PHP-Version leben - zurzeit ist das 4.3.10 und PHP 5 wird's so schnell nicht auf dem Server geben... :-/
                Frag einfach mal deinen Provider, bei all-inkl bieten die auf Nachfrage auch Version5 an!

                Ansonsten bin ich dir zwar dankbar für deinen Code, aber 'ne kleine Erklärung was was in deinem Snippet tut, wär' echt hilfreich, denn in Sachen OOP bin ich zwar kein Anfänger, aber auch kein Profi - ich würd' mich selbst als "beginnenden Fortgeschrittenen" bezeichnen...
                eigentlich war der Code nicht zum Verstehen, sondern ich wollte einfach nur wissen, ob er bei der eine 4 ausgibt oder ne Fehlermeldung oder sonstwas.
                Wenn ich weiß dass es bei dir funktioniert, erklär ich dir den Code auch, ansonsten wäre es vergeudete Zeit meinerseits und im Anbetracht, dass ich noch ein Referat machen muss, spar ich mir die Zeit dann momentan lieber auf!

                Wenn du mal direkt auf die Edit-Zeit meines 1. Posts siehst, würdest du bemerken, dass ich direkt im Anschluss an meine Antwort auf deinen Kommentar meinen 1. Post geändert habe und ich hab' in Mozilla mit AKTIVER Sidebar auch nur etwa 1000 Pixel Platz für die Websiten - und bei mir ist nix mit vertikalem Scrolling...
                Momentan ist da auch nix mehr, aber als ich meinen zweiten Post abgeschickt hatte, war da unten bei mir noch ein Balken _-_

                Hmm, das mit dem "global raus" hab ich gemacht - allerdings bekomme ich dann keine Query-Generation-Time und auch keine Queries-Anzahl mehr zurück, da steht dann einfach nix, wo sonst die Zeit / Anzahl steht...
                @Abraxax:
                ganz so einfach ist es nicht

                Und warum hat das "global" da drin nix verloren?!?
                Ich denke, "global" macht Variablen auch außerhalb von Funktionen/Klassen verfügbar?!? O.o
                global ist böse!!!
                Nur in allernötigsten Notfällen nutzen, eigentlich gibt es immer auch ne andere Möglichkeit!

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

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

                Kommentar


                • #9
                  ghostgamblers code für php < 5:
                  PHP-Code:
                  <?php
                  class mysql
                      
                  {
                          var 
                  $query_count=0;

                          function 
                  query()
                          {
                              
                  $this->query_count++;
                              return 
                  true;
                          }
                      }

                      class 
                  tools extends mysql
                      
                  {
                          function 
                  query2()
                          {
                              
                  parent::query();
                              return 
                  true;
                          }
                      }

                      
                  $tool = new tools();
                      
                  $tool->query2();
                      
                  $tool->query2();
                      
                  $tool->query2();
                      
                  $tool->query2();
                      echo 
                  $tool->get_query_count;  // direkte abfrage der var
                  ?>
                  @eagle
                  wenn du deine werte nicht innerhalb der class ablegst sondern (statt $this->var ... $var benutzt), darfst du dich nicht wundern, wenn die nach dem return aus der methode futsch sind. legst du sie jedoch in klassenvariablen ab, sind alle werte solange verfügbar, wie sie nicht überschrieben werden, bzw. das script läuft.
                  Kissolino.com

                  Kommentar


                  • #10
                    Original geschrieben von ghostgambler
                    persönliche Ansichtssache...hier helfen nicht soviele Leute wie in der anderen Kategorie!
                    deswegen verschieben wir wohl andauernd immer deine threads in das richtige forum.

                    hör auf so zu denken, und poste immer im passenden forum.

                    Original geschrieben von JfK
                    Du fasst 2 Variablen in einer zusammen, trennst sie durch ein Zeichen, dass 100% nicht in einer der Variablen vorkommt und danach ziehst du sie anhand des trennenden Zeichens wieder außeinander
                    das ist ja absoluter humbug. sowas habe ich ja noch nie gehört. arrays sind hier die einzige sinnvolle lösung.

                    alternativ sind eben classen, welche die variablen innerhalb der class verwenden.

                    Original geschrieben von Eagle
                    Hmm, das mit dem "global raus" hab ich gemacht - allerdings bekomme ich dann keine Query-Generation-Time und auch keine Queries-Anzahl mehr zurück,
                    nunja ... du musst natürlich nun in der class selber die werte verwalten und nicht mehr ausserhalb, wie du es bisher gemacht hast, und absolut keinen sinn bei classen macht.
                    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


                    • #11
                      @wurzel
                      PHP-Code:
                      // falsch
                      echo $tool->get_query_count;  // direkte abfrage der var

                      // richtig
                      echo $tool->query_count;  // direkte abfrage der var

                      // besser auch ohne direkte abfrage. aber das weisst du ja auch. ;-)
                      // in der class mysql noch dies einfügen.
                      function get_query_count()
                      {
                          return 
                      $this->query_count;
                      }

                      // und im hauptscript dann bitte ...
                      echo $tool->get_query_count(); 
                      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


                      • #12
                        *hupps, vertippt

                        die direkte var-abfrage habe ich extra gemacht ... aber was weisst du schon
                        Kissolino.com

                        Kommentar


                        • #13
                          OffTopic:
                          Original geschrieben von Wurzel
                          aber was weisst du schon
                          du mich auch ...
                          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


                          • #14
                            Original geschrieben von Abraxax
                            OffTopic:
                            du mich auch ...
                            OffTopic:
                            da fehlt mindestens ein verb
                            /ot
                            Kissolino.com

                            Kommentar


                            • #15
                              Original geschrieben von Wurzel
                              @eagle
                              wenn du deine werte nicht innerhalb der class ablegst sondern (statt $this->var ... $var benutzt), darfst du dich nicht wundern, wenn die nach dem return aus der methode futsch sind. legst du sie jedoch in klassenvariablen ab, sind alle werte solange verfügbar, wie sie nicht überschrieben werden, bzw. das script läuft.
                              Ups, stimmt...

                              Naja, ich hab das jetzt mal geändert und der Code für die 2 Klassen sieht nun so aus:

                              PHP-Code:
                              class mysql
                              {
                                  var 
                              $database 'DB_NAME';
                                  var 
                              $hostname 'localhost';
                                  var 
                              $username 'user';
                                  var 
                              $password 'pass';
                                  var 
                              $mysqldbQuery 0;
                                  var 
                              $fetchedQuery 0;
                                  var 
                              $numrowsQuery 0;
                                  var 
                              $sql_gentime 0;
                                  var 
                              $sql_queries 0;

                                  function 
                              open()
                                  {
                                      
                              $this->open mysql_connect($this->hostname$this->username$this->password);

                                      if (!
                              $this->open)
                                      {
                                          echo 
                              "MySQL-Error #: " mysql_errno() . "\n
                              <br />\nMySQL-Error: " 
                              mysql_error() . "\n<br />\n<br />\n";
                                      }

                                      
                              $this->select mysql_select_db($this->database);

                                      if (!
                              $this->select)
                                      {
                                          echo 
                              "MySQL-Error #: " mysql_errno() . "\n
                              <br />\nMySQL-Error: " 
                              mysql_error() . "\n<br />\n<br />\n";
                                      }

                                      return 
                              $this->open;
                                      return 
                              $this->select;    /* hier muss ich noch was ändern,
                                                              weil ich die Öffnung der Verbindung
                                                              und das auswählen der DB in EINER
                                                              Funktion haben will. Ich weiß
                                                              aber nach wie vor nicht, wie ich
                                                              das machen kann... :/ */
                                  
                              }

                                  function 
                              query($mysqldbQuery)
                                  {
                                      
                              $this->sql_starttime microtime();
                                      
                              $this->query mysql_query($mysqldbQuery);
                                      
                              $this->sql_endtime microtime();

                                      !isset(
                              $this->sql_queries) ? $this->sql_queries '0' $this->sql_queries++;
                                      !isset(
                              $this->sql_gentime) ? $this->sql_gentime '0.000' :
                              $this->sql_gentime round(($this->sql_endtime $this->sql_starttime), 3) + $this->sql_gentime;

                                      if (
                              $this->query == false)
                                      {
                                          echo 
                              "MySQL-Error #: " mysql_errno() . "\n
                              <br />\nMySQL-Error: " 
                              mysql_error() . "\n<br />\n
                              MySQL-Query: " 
                              $mysqldbQuery "\n<br />\n<br />\n";
                                      }

                                      return 
                              $this->query;
                                  }

                                  function 
                              fetch($fetchedQuery)
                                  {
                                      
                              $fetchedQuery == $this->fetch mysql_fetch_array($this->query) :
                              $this->fetch mysql_fetch_array($fetchedQuery);

                                      return 
                              $this->fetch;
                                  }

                                  function 
                              num_rows($numrowsQuery)
                                  {
                                      
                              $numrowsQuery == $this->num_rows mysql_num_rows($this->query) :
                              $this->num_rows mysql_num_rows($numrowsQuery);

                                      return 
                              $this->num_rows;
                                  }

                                  function 
                              shut()
                                  {
                                      
                              $this->shut mysql_close($this->open);

                                      if (!
                              $this->shut)
                                      {
                                          echo 
                              "MySQL-Error #: " mysql_errno() . "\n
                              <br />\nMySQL-Error: " 
                              mysql_error() . "\n<br />\n<br />\n";
                                      }

                                      return 
                              $this->shut;
                                  }
                              }

                              $mysql = new mysql;


                              class 
                              tools extends mysql
                              {
                                  function 
                              bbc($code)
                                  {
                                      
                              // BBC-Code-Funktionen...
                                  
                              }

                                  function 
                              usage()
                                  {
                                      
                              $this->open();
                                      
                              $this->query("DELETE
                                                    FROM server_usage
                                                    WHERE time < " 
                              . (time() - 86400));

                                      
                              $this->query("INSERT
                                                    INTO server_usage (time, ip)
                                                    VALUES (" 
                              time() . ", '" $_SERVER['REMOTE_ADDR'] . "')");
                                      
                              $this->query("SELECT time
                                                    FROM server_usage"
                              );
                                      
                              $this->num_rows();
                                      
                              $this->shut();

                                      return 
                              $this->num_rows;
                                  }

                                  function 
                              version()
                                  {
                                      
                              $this->open();
                                      
                              $build $this->fetch($this->query("SELECT VERSION()"));
                                      
                              $this->shut();
                                      
                              $this->version substr($build[0], 0, -4);

                                      return 
                              $this->version;
                                  }
                              }

                              $tool = new tools

                              Jetzt zeigt er zwar wieder SQL-Generation-Time und Query-Anzahl an, allerdings ist die Zahl nicht korrekt!
                              Denn alle Queries, die ich in der Tools-Klasse in der usage()-Funktion tätige zählt er nicht mit, die Endzahl für die Queries-Anzahl ist genau um diese 4 Queries zu niedrig...
                              Zuletzt geändert von ; 27.02.2005, 12:01.

                              Kommentar

                              Lädt...
                              X