Я получаю эту ошибку
PHP Неустранимая ошибка: Uncaught PDOException: SQLSTATE [HY000] [2002] Не удалось проанализировать адрес «localhost: 3306: 3306» в [myPath] /xxDb.php:32
Обратите внимание на «двойной» порт по адресу: localhost: 3306: 3306
xxDb.php line
32 xxDb.php line
выглядит следующим образом:
$db = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME.';charset=utf8', DB_USER, DB_PW, array( PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8" ));
dumping DB_HOST приводит к localhost:3306
.
Я не вижу, откуда приходит вторая часть 3306
порта, из которой, очевидно, существует во время инициализации соединения. Любая помощь высоко ценится.
Комментарий showdev верен, что PDO DSN не разрешает синтаксис хоста: порт.
Если ваша CMS определяет DB_HOST вне вашего контроля, вы не можете использовать эту константу напрямую. Но вы можете извлечь из него информацию.
$host_port = preg_replace('/:(\d+)/', ';port=${1}', DB_HOST); $db = new PDO("mysql:host={$host_port};dbname=".DB_NAME.";charset=utf8", DB_USER, DB_PW, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));