2015-03-30 2 views
0

Я следую учебному пособию по созданию системы входа на основе ООП. Я сделал все правильно, но при создании pdo я получаю ошибку в файле DB.php в строке 15 . Невозможно выяснить причину этой ошибки. Застрял там некоторое время. Кто-нибудь может помочь мне с этой ошибкой. Код может выглядеть долго, но это кусок пирога для вас, я обещаю. Есть FOUR 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

+1

Удалите 'as'. Это не псевдоним. –

+0

На днях у меня будет псевдоним моего собственного @ Fred-ii- –

ответ

0

Ваше сообщение об ошибке сообщит об ошибке. Это означает, что PHP-интерпретатор/процессор/программа пытались прочитать ваш файл, но обнаружил синтаксическую ошибку и должен был остановиться. Если вы посмотрите на строку 15 DB.php (за сообщение об ошибке)

}catch(PDOException as $e){ 

Вы увидите проблему. Это не относится синтаксис PHP - вы, вероятно, хотите

}catch(PDOException $e){ 

PDOException бит, который является типом класса подсказкой для кода обработки исключений - нет необходимости использовать as.

+0

OP не отвечал ни на один из наших комментариев, так что, возможно, они будут слушай тебя ;-) –

+0

@ Фред-и-Ха, я этого не заметил.Моя общая интернет-политика - игнорировать комментарии :) –

+0

lol да, я помню Alan ;-) –

Смежные вопросы