奇怪的问题 - 我有一个数据库类的实时副本(使用PDO)工作正常。我的机器上有一个使用WAMPServer的副本,但没有。
连接字符串如下(该类的片段):
$host = 'localhost';
$user = 'user';
$pass = 'password';
$dbname = 'my_dbname';
self::$_instance = new PDO('mysql:host=$host;dbname=$dbname', $user, $pass);
我收到的错误消息是:
Warning: PDO::__construct() [pdo.--construct]: php_network_getaddresses: getaddrinfo failed: No such host is known. in <path> on line 41
Warning: PDO::__construct() [pdo.--construct]: [2002] php_network_getaddresses: getaddrinfo failed: No such host is kn (trying to connect via tcp://$host:3306) in <path> on line 41
我不知道为什么它不在本地工作,而在线则很好。如果我将线本身改为下面,它可以正常工作:
self::$_instance = new PDO('mysql:host=localhost;dbname=my_dbname', $user, $pass);
谢谢:)
答案 0 :(得分:9)
使用双引号new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
否则变量不会插入到字符串中。另一种方式可能是
new PDO(sprintf('mysql:host=%s;dbname=%s', $host, $dbname), $user, $pass);
答案 1 :(得分:1)
self::$_instance = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
您需要使用双引号。
答案 2 :(得分:0)
变量不会用单引号解析。你必须用双引号括起来。
self::$_instance = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
答案 3 :(得分:0)
上面的答案都不适用于我。我用:
new PDO("mysql:host=".$host.";dbname=".$dbname, $user, $pass);