我创建了一个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'];
}
答案 0 :(得分:2)
单引号(在... new PDO('mysql:dbname=$db_name;host=$db_host;', ...
中)不会插入/使用变量 - 使用该代码连接到名为“$host
”的计算机,而不是$host
的值变量。
我的#1调试提示 - 打印实际发生的事情,而不是您认为必须的事情 - 令人惊讶的是,事情看起来显然是正确的,但在正确显示实际交付给系统时显然是错误的。
对于$connect = $connection->connect();
行,是 - 您需要return $connect;
退出该函数。该变量允许您访问PDO功能 - 它包含有关实际能够与数据库服务器通信的信息。 (在这种情况下,发送您首先prepare
的SQL。