PHP PDO初始化由于"double port"而失败 - 未捕获的PDOException: SQLSTATE[HY000] [2002]



我得到此错误

php致命错误:未被发现的pDoexception:sqlstate [hy000] [2002]未能解析[localhost:3306:3306" [mypath]/xxdb.php:32

请注意地址中的"双"端口: 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在连接初始化期间显然存在的第二部分。任何帮助都将受到高度赞赏。

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"));

相关内容

最新更新