2017-06-02 88 views
-1

我正在創建一個面向對象的登錄,這是我的數據庫類頁面。致命錯誤:未捕獲錯誤:調用成員函數prepare()null在文件位置

<?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'; 
     } 


    } 

} 


?> 

這是我用來測試程序接受查詢的能力的索引頁。當我嘗試運行此頁時出現此錯誤

致命錯誤:未捕獲錯誤:調用成員函數prepare()在C:\ xampp \ htdocs \ objectorientedlogin \ classes \ DB.php中爲null:36堆棧跟蹤:#0 C:\ xampp \ htdocs \ objectorientedlogin \ index.php(4):DB-> query('SELECT username ...')#1 {main}拋出C:\ xampp \ htdocs \ objectorientedlogin \ classes \ db.php中上線36

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

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

這是對每一個加載的類自動加載我的init.php頁。

<?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'; 



?> 

這是我的配置頁面

<?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

因爲,這是一個錯字'_construct' - 缺少下劃線=>'__construct' –

+0

感謝@弗雷德-II- – ted23

回答

0

你有一個錯字與_construct。它應該是__construct

public function __construct(){ 

} 
相關問題