[MSSQL] RessourceType geht verloren...

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

  • [MSSQL] RessourceType geht verloren...

    Nabend zusammen,

    Ich habe eine Klasse , die meine Datenbankverbindungen regelt.
    Darin wiederum habe ich eine Methode, die den DB Connect und meinen Query ausführt und eine Methode, die die mssql_fetch_object funktion ausführt.

    Problem ist, dass beim Ausführen der Methode für den mssql_fetch_object der RessourceType vom Result verloren geht.
    Führe ich allerdings direkt nach meinem query die mssql_fetch_object Funktion aus, dann geht alles.

    Woran kann es liegen, dass der RessourceType des Results verloren geht?

    Mario

  • #2
    Zeig uns bitte den Code.

    Kommentar


    • #3
      Woran kann es liegen, dass der RessourceType des Results verloren geht?
      Ohne dass du sie in deinem Code irgendwo überschreibst, liegt die Wahrscheinlichkeit bei unter 0, das PHP den Wert einer Var einfach so verliert.
      Also drum etwas Quellcode bitte

      Gruss

      tobi
      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

      Kommentar


      • #4
        RessourceType geht verloren

        Ich führe innerhalb der Klasse die Methode connect() aus, die den DB_Connect ausführt und den Query ausführt.
        Danach führe ich die Methode fetch_object () aus um meine Daten raus zu bekommen.

        PHP-Code:
        private function connect(......){
        $this->db_result mssql_query"mein query"$db );
        // direkt nach dem mssql_query befehl ist die Ressource noch verfügbar

        }


        // führe ich stattdessen die function fetch_object aus, so ist die Ressource nicht mehr verfügbar und "unknown".
            
        public function fetch_object (){

                
        $this->fetch_obj();
                return 
        $this->db_fetch_object;
                
            }

            private function 
        fetch_obj(){
            
                
        $this->db_fetch_object mssql_fetch_object$this->db_result );

                
            } 

        Kommentar


        • #5
          Und wenn du deine Methode mal testweise so schreibst ?
          PHP-Code:
          public function fetch_object (){
                  
          var_dump($this->db_result);
                  
          $this->fetch_obj();
                  return 
          $this->db_fetch_object;
                  

          Ist's dann immer noch unbekannt ?

          Gruss

          tobi
          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

          Kommentar


          • #6
            [MSSQL] RessourceType geht verloren

            Ja der RessourceType ist verloren, sobald ich versuche ihn über eine Methode zu nutzen.

            Direkt nach dem Ausführen des Query:
            resource(85) of type (mssql result)

            Nach dem Ausführen der Methode:
            resource(85) of type (Unknown)

            Mario

            Kommentar


            • #7
              Wie ist $db_result definiert ? Private oder public ?
              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

              Kommentar


              • #8
                Auch schon so probiert ?
                PHP-Code:
                global $this->db_result mssql_query"mein query"$db ); 
                Auf globale Vars können grundsätzlich alle Methoden einer Klasse zugreifen.
                Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                Kommentar


                • #9
                  [MSSQL] RessourceType geht verloren

                  Also wenn ich schreibe:

                  PHP-Code:
                  global $this->db_result mssql_query"mein query"$db ); 
                  ... dann bringt er diese Meldung, die ich nicht so recht nachvollziehen kann. ..." Fatal error: Cannot re-assign $this in "...

                  Ich hab keinerlei Ideen mehr, was das sein soll.
                  Wie gesagt... führe ich innerhalb der selben Methode direkt nach dem mssql_query() das var_dump ( $this->db_result ); aus, dann gibt er mir resource(85) of type (mssql result) zurück.

                  Führe ich danach von außen zB. $db->fetch_object() aus, dann bekomme ich nur noch resource(85) of type (Unknown) zurück.

                  Ich kann sozusagen nicht über eine Methode die Ressource verwenden, da sie nicht mehr bekannt ist.

                  Mario

                  Kommentar


                  • #10
                    Sorry mein Fehler. Schreib am Anfang deiner Klasse noch vor jeglichen Methoden
                    PHP-Code:
                    global $db_result
                    Btw ein
                    PHP-Code:
                    error_reporting(E_ALL); 
                    ganz am Anfang deines Scriptes hast du und bringt keine Fehlermeldungen ?

                    Gruss

                    tobi
                    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                    Kommentar


                    • #11
                      [MSSQL] RessourceType geht verloren

                      schreibe ich vor alle meine Methoden ein "global", dann kommt diese meldung.

                      Parse error: parse error, unexpected T_GLOBAL, expecting T_FUNCTION in

                      Selbst wenn ich überall private oder public weglasse, ist die Ressource bei ausführen der Methode ( Unknown )
                      error_reporting(E_ALL); ist jetzt mit angegeben aber beim Ausführen der Klasse und deren Methoden kommt es zu keinem Fehler.


                      Mario
                      Zuletzt geändert von GELight; 29.11.2006, 20:58.

                      Kommentar


                      • #12
                        du sollst nicht die Methoden (Funktionen) sondern die Variable global setzen !

                        Gruss

                        tobi
                        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                        Kommentar


                        • #13
                          [MSSQL] RessourceType geht verloren

                          $this->db_result ist private gesetzt und wird ausschließlich innerhalb der Klasse verwendet.

                          definieren ich $this->db_result mit global, dann kommt es zu....
                          Fatal error: Cannot re-assign $this in

                          Mario

                          Kommentar


                          • #14
                            du musst nicht $this->var global setzen sondern $var
                            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                            Kommentar


                            • #15
                              [MSSQL] RessourceType geht verloren

                              Also ich weiß jetzt nicht mehr so recht nach 7 Stunden Fehlersuche, was das global in dem Fehler evtl. ändern sollte. Sehe keine so rechte Logik darin, dass er den RessourceType danach durch eine global Variable behalten sollte.

                              Ich hab jetzt genau deine Schreibweisen, wie du schon geschrieben hast mit dem global versucht aber es kommt entweder dieser Fatal error: Cannot re-assign $this in.. Fehler oder es kommt zu einem ParseError.

                              Die Frage ist immernoch, warum ich keinen Zugriff mehr auf den RessourceType in einer anderen Methode der Klasse habe.

                              Mario

                              Kommentar

                              Lädt...
                              X