Intereting Posts
Paypal Access – сертификат SSL: не удалось получить сертификат локального эмитента Создать поле выбора подкатегории onChange Как зарегистрировать пользователя из приложения Symfony 2 с помощью внутренних обработчиков Как я могу удалить все пустые значения, когда я взорву строку с помощью PHP? Получасовые часовые пояса отсутствуют SSL Alternative – шифрование пароля с помощью JavaScript для PHP для расшифровки Наименее интенсивный способ чтения файла в PHP PHP, не выполняющий сериализацию JS-сериализованной строки переменных Какая строка прерывается в заголовке php mail, \ r \ n или \ n? Parse Receiver android code после отправки push из php Использование REGEXP внутри подготовленного оператора mysqli в PHP перенаправление URL неверно с использованием .htacess в php проблемы с передачей значений массива Сумма столбцов в многомерном массиве без циклов Автоматически генерируемый порядковый номер, начиная с 001 (ТОЛЬКО ДЛЯ 3 ЦИФРОВ) – PHP / MYSQL

PHP – переменные, не замененные в строке подключения PDO

Странная проблема – у меня есть живая копия класса базы данных (с использованием 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);