我得到此错误
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"));