PDO无效的数据源名称

时间:2018-01-21 18:12:30

标签: php pdo

我收到了无效的数据来源名称'当试图连接config.php中的数组时。如果我硬编码我在这里做错了什么呢?

由于

的config.php

<?php

return [
    'database' => [
        'host' => 'mysql:host=127.0.0.1',
        'database' => 'pdo_database',
        'username' => 'root',
        'password' => '',
        'options' => [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
        ]
    ]
];

connection.php

<?php

$config = require('config.php');
$database = $config['database'];

class Connection {
    public function make() {
        try {
            return new PDO(
                $database['host'].';dbname='.$database['database'],
                $database['username'],
                $database['password'],
                $database['options']
            );
        } catch(PDOException $e) {
            die($e->getMessage());
        }
    }
}

1 个答案:

答案 0 :(得分:1)

问题是make()方法不能简单地访问全局变量。如果您将$database配置传递到make()方法...

public function make($database) {

这会传递为这组参数创建数据库连接所需的配置。

根据您使用此类的方式,您可以将其更改为静态方法

public static function make($database) {

然后像这样使用它......

$connection = Connection::make($database);