Intereting Posts

Ошибка инициализации PHP PDO из-за «двойного порта» – Uncaught PDOException: SQLSTATE

Я получаю эту ошибку

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 порта, из которой, очевидно, существует во время инициализации соединения. Любая помощь высоко ценится.

Solutions Collecting From Web of "Ошибка инициализации PHP PDO из-за «двойного порта» – Uncaught PDOException: SQLSTATE"

Комментарий 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"));