Uhfe: Methode eines Objekts...

Guten Morgen,

habe mich selbst von der Notwendigkeit überzeugt mal ein wenig in Richtung OOP zu gehen.

Bin gerade bei den ersten Schritten. Habe mir eine Klasse angelegt, die einen MS-SQL Server abfragen soll.

Funktioniert -rudimentär zwar noch- soweit.

Frage:
ich habe eine Methode "query_execute"

Die rufe ich einmal auf mit dem Statement 'select count(*) from ....')
diesen Wert gebe ich zurück.
$count = $db->query_execute('select count(*) from ......');

Danach wollte ich die Methode mit einem neuen Query nochmal aufrufen.
$ergebnis = $db->query_execute('select * from cs2.csa20020');

Das funzt aber nicht. Einzeln funktionieren die Methodenaufrufe. Soll das so sein? Wenn ja warum?

Thx

Uhfe

  1. Hi Uhfe,

    Ohne die Klasse zu kennen, wird dir sicher niemand wirklich helfen können.
    Man kann nur Vermutungen anstellen.

    Poste mal den Quelltext der Klasse, bzw. nur die funktion query_execute aus der Klasse.

    MfG

    --
    ie:{ fl:( br:^ va:) ls:[ fo:| rl:? n4:( ss:) de:] js:( ch:? sh:) mo:| zu:)
    1. Hai,

      //Methode query_execute
          function query_execute($query)
          {
              $this->result = odbc_exec($this->link, $query, $links);
              $this->string .= 'Der Query wurde ausgeführt<br>';
              if ($this->result){
                  $this->string .= 'Resultset<br>';
                  return $this->result;
              }
              else {$this->string .= 'Kein Resultset';}
          }

      Der String dient mir nur zur Fehleranalyse. Wie geschrieben, wenn die Methode nur einmal aufgerufen wird, funzt sie.

      Hi Uhfe,

      Ohne die Klasse zu kennen, wird dir sicher niemand wirklich helfen können.
      Man kann nur Vermutungen anstellen.

      Poste mal den Quelltext der Klasse, bzw. nur die funktion query_execute aus der Klasse.

      MfG

      1. Was für einen Fehler bekommst du denn?
        Lass dir mal den ODBC Fehler ausgeben.

        function query_execute($query)
        {
        $this->result = odbc_exec($this->link, $query, $links);
        $this->string .= 'Der Query wurde ausgeführt<br>';
        if ($this->result)
        {
          $this->string .= odbc_errormsg($this->link);
          return $this->result;
        }
        else
        {
          $this->string .= odbc_errormsg($this->link);
        }
        }

        MfG

        --
        ie:{ fl:( br:^ va:) ls:[ fo:| rl:? n4:( ss:) de:] js:( ch:? sh:) mo:| zu:)
        1. Hallo,

          Warning: odbc_exec() [function.odbc-exec]: SQL error: l)Ð@, SQL state 00000 in SQLExecDirect in /home/intranetuser/www/ssl/include/classes/msSql.php on line 28

          Was für einen Fehler bekommst du denn?
          Lass dir mal den ODBC Fehler ausgeben.

          function query_execute($query)
          {
          $this->result = odbc_exec($this->link, $query, $links);
          $this->string .= 'Der Query wurde ausgeführt<br>';
          if ($this->result)
          {
            $this->string .= odbc_errormsg($this->link);
            return $this->result;
          }
          else
          {
            $this->string .= odbc_errormsg($this->link);
          }
          }

          MfG

          1. Tach auch,

            Warning: odbc_exec() [function.odbc-exec]: SQL error: l)Ð@, SQL state 00000 in SQLExecDirect in /home/intranetuser/www/ssl/include/classes/msSql.php on line 28

            Das ist ja mal ne ziemlich nichts sagende Fehlermeldung ;)

            Ich schätze dein Query ist nicht ganz korrekt oder so. Hab leider keinen Plan von MS-SQL :(
            Denke nicht das es was mit PHP zu tun hat.

            MfG

            --
            ie:{ fl:( br:^ va:) ls:[ fo:| rl:? n4:( ss:) de:] js:( ch:? sh:) mo:| zu:)
            1. Hmmh,

              $ergebnis = $db->query_execute('select * from cs2.csa20020');

              das Select-Statement ist so ziemlich sicher. Zumal wie erwähnt. Wenn ich den count vorher weglasse bekomme ich ja ein Resultset.

              Ich habe so das Gefühl, dass ich eine Methode eines Objects nicht zweimal aufrufen darf....

              Grüße

              Tach auch,

              Warning: odbc_exec() [function.odbc-exec]: SQL error: l)Ð@, SQL state 00000 in SQLExecDirect in /home/intranetuser/www/ssl/include/classes/msSql.php on line 28

              Das ist ja mal ne ziemlich nichts sagende Fehlermeldung ;)

              Ich schätze dein Query ist nicht ganz korrekt oder so. Hab leider keinen Plan von MS-SQL :(
              Denke nicht das es was mit PHP zu tun hat.

              MfG

              1. Hi,

                Ich habe so das Gefühl, dass ich eine Methode eines Objects nicht zweimal aufrufen darf....

                Doch natürlich, sonst wäre ja der Sinn einer Klasse völlig dahin.

                odbc_exec($this->link, $query, $links)

                Ich habe mir odbc_exec gerade nochmal angeschaut, die funktion erwartet keinen 3.ten Parameter.

                Zumal wie erwähnt. Wenn ich den count vorher weglasse bekomme ich ja ein Resultset.

                Und was passiert wenn du den count danach abfragst?

                MfG

                --
                ie:{ fl:( br:^ va:) ls:[ fo:| rl:? n4:( ss:) de:] js:( ch:? sh:) mo:| zu:)
              2. Also,

                habe das Problem jetzt dermaßen gelöst, dass ich erst die Anzahl abfrage, den Connect schließe und danach einen neuen Connect mit neuem query starte.

                Funzt...

                Ciao

                Uhfe