PDO Datenbank Klasse in anderer Klasse nutzen

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

  • PDO Datenbank Klasse in anderer Klasse nutzen

    Hallo,

    ich habe mir eine Klasse geschrieben welche in einer anderen Klasse nutzen möchte.

    meine PDO Datenbank Klasse trägt den Namen "dbh"

    Meine nächste Klasse "Page" soll anhand der URL Parameter in der Datenbank nach der entsprechenden Seite suchen und solche Dinge wie den Pfad der zu verwendenden Module ausspucken.

    Die PDO Klasse funktioniert, ich hab sie schon getestet und ergebnisse bekommen.

    Ich versuche jetzt die "dbh" Klasse über die function __cunstructor einzubinden und weise ihr die Variable "$this->dbh" bzw "$dbh" zu.
    Wenn ich versuche meine Klasse "Page" aufzurufen, bekomme ich die Meldung das die Variable $dbh nicht definiert ist.

    Hier die Page-Klasse:

    PHP-Code:
    class Page {
        public 
    $page;
        private 
    $action;
        private 
    $module;
        private 
    $dbh;
        
        function 
    __construct($dbh) {
            
    $this->dbh      $dbh;
            
    $this->page     = isset($_POST['page']) ? $_GET['page'] : null;
            
    $this->action   = isset($_POST['action']) ? $_GET['action'] : null;
            
    $this->module   = isset($_POST['module']) ? $_GET['module'] : null;
        } 
        
        function 
    readPage() {
            
    // Das hier ist Line 36
            
    $dbh->query("SELECT * FROM page WHERE page_name=:page_name");
            
    $dbh->bind(':page_name'$this->page);
            
    $row $dbh->single();
            echo 
    $row['page_name'];
            
        }
        function 
    readModule() {
            
        }
        function 
    readAction() {
            
        }
    }
    $Page = new Page($dbh); 
    Folgende Fehlemerldung:
    Code:
    Notice: Undefined variable: dbh in C:\xampp\htdocs\testimonia\kernel\page.kernel.php on line 36
    Code:
    Fatal error: Call to a member function query() on a non-object in C:\xampp\htdocs\testimonia\kernel\page.kernel.php on line 36
    Jemand Lösungsvorschläge für mich?

    EDIT:
    Habe den Fehler gefunden. Anstatt $dbh anzusprechen muss ich natürlich $this->dbh verwenden.

    Thread kann geschlossen werden
    Zuletzt geändert von analyzer; 28.05.2013, 14:18. Grund: Gelöst

  • #2
    Du definierst Deine Datenbankverbindung mit der Eigenschaft dbh der Klasse Page. Somit musst Du auch genau diese Eigenschaft ansprechen und nicht die Variable $dbh, die die Methode readPage() gar nicht kennt.

    Stichwort:
    PHP-Code:
    $this->dbh->query(...); 
    MM Newmedia | MeinBlog

    Kommentar


    • #3
      Nur zur Richtigstellung: Du möchtest keine Klasse, sondern ein Objekt einbinden.

      Du solltest übrigens kein SELECT * verwenden, sonder immer alle Spalten selektieren, die du haben möchtest.

      Kommentar

      Lädt...
      X