2017-02-03 2 views
-1

Я пишу класс базы данных, который собирается подключиться к моей базе данных pdo. Этот класс использует этот конфигурационный файл, чтобы получить необходимую информацию:Не удается подключиться к базе php с помощью pdo

<?php 
return [ 
    'host' => '127.0.0.1', 
    'username' => 'root', 
    'password' => '', 
    'database_name' => 'books', 
    'database_type' => 'mysql', 
    'options' => [] 
]; 

И это класс базы данных:

<?php 
class DB 
{ 
    public static function connect($config) 
    { 
     try { 
      return new PDO([ 
       $config['database_type'] . ':host=' . $config['host'] . ';dbname=' . $config['database_name'], 
       $config['username'], 
       $config['password'], 
       $config['options'] 
      ]); 
     } catch(PDOException $e) { 
      die($e->getMessage()); 
     } 
    } 
} 

Я получаю эту ошибку:

Fatal error: Uncaught TypeError: PDO::__construct() expects parameter 1 to be string, array given in and etc...

Я интересно что я сделал неправильно, sicne Я не вижу никаких синтаксических ошибок в моем коде.

ответ

1

У вас есть дополнительный набор скобок:

 return new PDO([ 
      ... 
     ]); 

... не должны иметь [и] соответственно; они превращают ваши четыре функциональных параметра в один параметр массива. Вы хотите просто

 return new PDO(
      ... 
     ); 

HTH!

+0

Вы были верны. Совсем плохо. Даже не заметил. Спасибо! –

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