2017-06-02 5 views
-1

Ich erstelle eine objektorientierte Anmeldung und das ist meine Datenbank-Klassenseite.Schwerwiegender Fehler: Uncaught Fehler: Aufruf einer Memberfunktion prepare() für Null in Dateiposition

<?php 
class DB { 
    private static $_instance = null; 
    private $_pdo, 
      $_query, 
      $_error= false, 
      $_results, 
      $_count = 0; 






    public function _construct(){ 
      try{ 
       $this->_pdo = new 
     PDO('mysql:host='.Config::get('mysql/host').' 
     ;dbname='.Config::get('mysql/db') 

      Config::get('mysql/username'),Config::get('mysql/password')); 
       echo 'Connected'; 
      } catch(PDOException $e){ 
       die($e->getMessage()); 

      } 

    } 

    public static function getInstance(){ 
      if(!isset(self::$_instance)){ 
       self::$_instance = new DB(); 

      } 
      return self::$_instance; 
    } 

    public function query($sql, $params =array()){ 
     $this->_error = false; 
     if($this->_query=$this->_pdo->prepare($sql)){ 
      echo 'Success'; 
     } 


    } 

} 


?> 

Dies ist meine Indexseite, die ich verwende, um die Fähigkeit des Programms zu testen, Abfragen zu akzeptieren. Ich bekomme diesen Fehler, wenn ich versuche, diese Seite auszuführen

Schwerwiegender Fehler: Uncaught Fehler: Aufruf einer Memberfunktion prepare() auf Null in C: \ xampp \ htdocs \ objektorientierteslogin \ classes \ DB.php: 36 Stack-Trace : # 0 C: \ xampp \ htdocs \ objektorientierteslogin \ index.php (4): DB-> query ('SELECT username ...') # 1 {main} geworfen in C: \ xampp \ htdocs \ objektorientierteslogin \ classes \ DB.php on line 36

<?php 
require_once 'core/init.php'; 

DB::getInstance()->query("SELECT username FROM users"); 
?> 

Dies ist meine init.php Seite, die einen Autoloader zum Laden jeder Klasse hat.

<?php 
session_start(); 

$GLOBALS['config']= array(
'mysql'=> array(
    'host'=>'127.0.0.1', 
    'username'=> 'root', 
    'password'=>'', 
    'db'=>'oop_login' 
    ), 
'remember'=>array(
    'cookie_name'=>'hash', 
    'cookie_expiry'=>604800 
    ), 
'session'=> array(
    'session_name'=> 'user' 
    ), 

); 

    spl_autoload_register(function($class){ 

require_once 'classes/'.$class.'.php'; 
}); 

    require_once 'functions/sanitize.php'; 



?> 

Dies ist meine Konfigurationsseite

<?php 
Class Config{ 

public static function get($path=null){ 
    if($path){ 
     $config = $GLOBALS['config']; 
     $path = explode('/',$path); 

     foreach($path as $bit){ 
      if(isset($config[$bit])){ 
       $config = $config[$bit]; 
      } 
     } 
     return $config; 

    } 

} 

} 

?> 
+0

sein, weil es ein Tippfehler '_construct' ist - fehlt ein Unterstrich =>' __construct' –

+0

dank @ Fred-II- – ted23

Antwort

0

Sie haben einen Tippfehler mit _construct. Es sollte __construct

public function __construct(){ 

} 
Verwandte Themen