2015-03-30 72 views
0

我正在按照教程創建基於OOP的登錄系統。我做了所有相應的事情,但在創建pdo時我在第15行的DB.php文件中發生錯誤。無法找出這個錯誤的原因。在那裏停留了一段時間。任何人都可以幫我解決這個錯誤。代碼可能看起來很長,但它是我保證的一塊蛋糕。有四個php文件。無法確定創建PDO對象時可能導致此錯誤的原因

1.init.php文件包含用於創建新PDO()對象的成分。

2.config.php文件用於從init.php文件獲取數據,因爲字符串以('mysql/host')類型傳遞給它並使用explode()函數從中提取數據。

2.DB.php文件用於連接數據庫。 我得到的錯誤是

enter image description here

db.php中的文件:

class DB{ 
    private $_instance=null; 
    private $pdo, 
      $query, 
      $error=false, 
      $results, 
      $count=0; 
    private function __construct(){ 
      try{ 

       $this->$pdo=new PDO('mysql:host='.Config::get('mysql/host').';dbname='.Config::get('mysql/db'),Config::get('mysql/user'),Config::get('mysql/password')); 


      }catch(PDOException as $e){ 
       echo $e->getMessage(); 
      } 
    } 
    public static function getInstance(){ 
     if(!isset(self::$_instance)){ 
       self::$_instance=new DB(); 
     } 

      return self::$_instance; 
     } 

    } 

config.php文件:

class Config{ 

     public static function get($path){ 
      if($path){ 
       $config=$GLOBALS['config']; 
       $arr=explode('/',$path); 
       foreach($arr as $bit){ 
        if(isset($config[$bit])){ 

         $config=$config[$bit]; 

        } 
       } 
       return $config; 
      } 
     } 
    } 

的init.php文件:

session_start(); 

$GLOBALS['config']=array(
    'mysql'=>array(

     'host' => 'localhost', 
     'db' => 'login', 
     'user' => 'root', 
     'password' => '' 

    ) 

); 

spl_autoload_register(function($class){ 

    require_once 'c:/xampp/htdocs/login/classes/'.$class.'.php'; 

}); 

require_once 'c:/xampp/htdocs/login/function/sanitize.php'; 

index.php文件:

require_once 'c:/xampp/htdocs/login/core/init.php'; 

    DB::getInstance()->query('SELECT name FROM table WHERE id=1'); 
+1

catch(PDOException as $ e)' - > catch(PDOException $ e)'爲什麼要使用'as'?在這裏沒有意義(欲瞭解更多信息,請參閱:http://php.net/manual/en/language.exceptions.php) – Rizier123 2015-03-30 19:17:50

+1

刪除'as'。這不是別名。 – 2015-03-30 19:20:24

+0

其中一個這些天我會有我自己的別名@ Fred-ii- – 2015-03-30 19:28:09

回答

0

你的錯誤信息是分析錯誤。這意味着PHP解釋器/處理器/程序試圖讀取您的文件,但發現語法錯誤,不得不停止。如果你看DB.php的第15行(根據錯誤信息)

}catch(PDOException as $e){ 

你會看到這個問題。這不是有效的PHP語法 - 你可能想

}catch(PDOException $e){ 

PDOException位的是對異常處理代碼的類類型提示 - 有沒有必要使用as

+0

OP沒有迴應我們的任何評論,所以也許他們會聽你的;-) – 2015-03-30 19:45:22

+0

@ Fred-ii-哈,我沒注意到那裏。我的一般互聯網政策是忽略評論:) – 2015-03-30 19:46:19

+0

哈哈是的,我記得阿蘭;-) – 2015-03-30 19:46:55

相關問題