Странная проблема – у меня есть живая копия класса базы данных (с использованием 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);
Благодаря 🙂
Использовать двойные кавычки new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
иначе переменные не будут вставлены в строку. Другим способом может быть
new PDO(sprintf('mysql:host=%s;dbname=%s', $host, $dbname), $user, $pass);
self::$_instance = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
Вам нужно использовать двойные кавычки.
Переменные не обрабатываются одинарными кавычками. вы должны заключить их в двойные кавычки.
self::$_instance = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
Оба ответа выше не работают мной. Я использую:
new PDO("mysql:host=".$host.";dbname=".$dbname, $user, $pass);