Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] PDO prepare Problem in einer Klasse

Einklappen

Neue Werbung 2019

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

  • [Erledigt] PDO prepare Problem in einer Klasse

    Hallo zusammen

    Hab da ein Problem mit PDO in einer PHP Klasse. Folgender Fehler:

    [MAN]
    Fatal error: Call to a member function prepare() on a non-object in /home/httpd/httpsdocs/libs/php/classes/connectSSD.class.php on line 30
    [/MAN]

    Hier die Seite welche aufgerufen wird:

    PHP-Code:
    require_once 'libs/php/classes/connectSSD.class.php';
    require_once 
    'libs/php/classes/urlworker.class.php';
    require_once 
    'libs/php/classes/verifyClient.class.php';

    // Establish connection to the SSD
    $SSD = new connectSSD();

    // Extract the subdomain from URL
    $client = new verifyClient();
    $subdomain $client->getClient();

    // Check if exists
    $SSD->checkSubdomain($subdomain); 
    So sieht die Klasse aus:

    PHP-Code:
    class connectSSD {
        public 
    $ssd;
        function 
    __construct(){
            
    $DSN "mysql:host=localhost;dbname=server1";
            
    $NW_SSD_USER "admin";
            
    $NW_SSD_PASSWD "********";
            try {
                
    $ssd = new PDO($DSN,$NW_SSD_USER,$NW_SSD_PASSWD);
            }
            catch (
    PDOException $p)
            {
                echo 
    "Connection to the system failed.";
            }
        }

        function 
    checkSubdomain($subdomain){
            
    $sql $this->ssd->prepare("Select CNB from customer_index WHERE CSD =
                                        :subdomain"
    );
            
    $sql->bindParam(':subdomain',$subdomain,PDO::PARAM_STR);
            
    $sql->execute($sql);
        }

    Bin ich falsch wenn ich sage dass $this->ssd ein Objekt innerhalb der Klasse der PDO klasse ist?

    Gruss
    It's not a bug. It's a feature!


  • #2
    Zitat von da.eXecutoR Beitrag anzeigen
    Bin ich falsch wenn ich sage dass $this->ssd ein Objekt innerhalb der Klasse der PDO klasse ist?
    Zumindest ungenau, denn $this->ssd ist zunächst mal ein Attribut deiner Klasse connectSSD.

    Und wenn dir beim Versuch, darauf eine Methode prepare aufzurufen, gemeldet wird, dass es sich um kein Objekt handle, dann ist das wohl auch so.
    Also schau dir erst mal per var_dump an, was du da eigentlich vorliegen hast (vermutlich schlicht false).

    Kommentar


    • #3
      Naja mit:

      PHP-Code:
      echo var_dump($this->ssd); 
      krieg ich NULL. Aber die Verbindung steht, sonst würd ich ja ne Exepction kriegen, also frage ich mich jetzt wie ich aus dem attribute denn nen objekt generieren kann?

      PDO ist etwas neuland für mich.

      Gruss & danke für deine Hilfe!
      It's not a bug. It's a feature!

      Kommentar


      • #4
        Wenn du NULL bekommst, dann hast du an der Stelle definitiv keine gültige DB-Verbindung vorliegen.


        $ssd ist eine lokale Variable in deiner Konstruktor-Methode - die ist nach deren Ausführung weg.
        Wenn du das Klassenattribut ssd meinst - dann sprich es auch mit $this->ssd an.

        Kommentar


        • #5
          Danke das wars:

          PHP-Code:
          $ssd = new PDO($DSN,$NW_SSD_USER,$NW_SSD_PASSWD); 
          PHP-Code:
          $this->ssd = new PDO($DSN,$NW_SSD_USER,$NW_SSD_PASSWD); 
          Dacht ich doch ich such zu weit.

          Gruss
          It's not a bug. It's a feature!

          Kommentar

          Lädt...
          X