我收到此错误
PHP致命错误:未捕获PDOException:SQLSTATE [HY000] [2002]无法解析地址" localhost:3306:3306"在[myPath] /xxDb.php:32
注意" double"地址中的端口: localhost:3306:3306
xxDb.php line
32看起来像这样:
$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" ));
转储DB_HOST会导致localhost:3306
。
我无法看到第二个端口部分3306
来自哪个显然存在于连接初始化期间。
任何帮助都非常感谢。
答案 0 :(得分:2)
showdev的评论是正确的,PDO DSN不允许host:port语法。
如果您的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"));