2017-02-03 7 views
-1

Ich schreibe eine Datenbank-Klasse, die Verbindung zu meiner PDO-Datenbank wird. Diese Klasse wird mit dieser Konfigurationsdatei, die Informationen zu erhalten, benötigt:Konnte keine Verbindung zur PHP-Datenbank mit PDO

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

Und dies ist die Datenbank-Klasse:

<?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()); 
     } 
    } 
} 

Ich erhalte diese Fehlermeldung:

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

Ich frage mich, was ich falsch gemacht habe, sicne Ich sehe keine Syntaxfehler in meinem Code.

Antwort

1

Sie haben einen zusätzlichen Satz von Klammern:

 return new PDO([ 
      ... 
     ]); 

... sollte jeweils die [und] nicht haben; Sie verwandeln Ihre vier Funktionsparameter in einen einzigen Array-Parameter. Sie wollen einfach

 return new PDO(
      ... 
     ); 

HTH!

+0

Sie hatten Recht. Völlig mein Schlechter. Hab es nicht einmal bemerkt. Vielen Dank! –

Verwandte Themen