无法连接到数据库不断收到异常错误

时间:2018-03-14 23:04:57

标签: php pdo

我创建了一个DB类,并在页面上调用了该类,但我不知道问题是什么,我一直收到一个不寻常的错误,在Google上发现了类似的问题,但无法解决这个问题。

这是错误:

SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known

这是我的db类

class db {
    private $host;
    private $db_name;
    private $db_user;
    private $db_password;

    public function connect() {
        $db_name = $this->db_name;
        $db_user = $this->db_user;
        $db_pass = $this->db_password;
        $db_host = $this->host;

        $db_name = 'database name';
        $db_user = 'username';
        $db_pass = 'password';
        $db_host = 'localhost:3306';

        try {
            $connect = new PDO('mysql:dbname=$db_name;host=$db_host;', $db_user, $db_pass);
            $connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            echo "Connection Successfull";
        } catch(PDOException $e) {
            echo "Connection Failed : " . $e->getMessage();
        }
    }
}

这是我用来测试这只是一个警告的代码,还是与数据库的连接失败

$users      = new users();
    $connection = new db();
    $connect    = $connection->connect();
    $sql = $connect->prepare("SELECT * FROM users");
    $sql->execute();
    while($data = $sql->fetch(PDO::FETCH_ASSOC)) {
        echo $data['name'];
    }

1 个答案:

答案 0 :(得分:2)

单引号(在... new PDO('mysql:dbname=$db_name;host=$db_host;', ...中)不会插入/使用变量 - 使用该代码连接到名为“$host”的计算机,而不是$host的值变量。

我的#1调试提示 - 打印实际发生的事情,而不是您认为必须的事情 - 令人惊讶的是,事情看起来显然是正确的,但在正确显示实际交付给系统时显然是错误的。

对于$connect = $connection->connect();行,是 - 您需要return $connect;退出该函数。该变量允许您访问PDO功能 - 它包含有关实际能够与数据库服务器通信的信息。 (在这种情况下,发送您首先prepare的SQL。