我正在尝试在我的PHP代码中使用PDO模块连接数据库。我已经阅读并搜索了类似的话题,但我无法弄清楚我做错了什么。请帮我解决这个问题。
Apache版本:Apache/2.2.21(Win32)PHP/5.3.10
在php.ini文件中,我取消注释了以下行:extension=php_mysql.dll
2a.phpinfo函数显示“Loaded Configuration File”位置为C:\php\php.ini
2b.PDO驱动程序信息由phpinfo函数显示: 在PDO部分下:PDO drivers-->Mysql (enabled) 在针对MySQL的PDO驱动程序部分下:client API version-->mysqlnd 5.0.8-dev - 20102224 - $Revision: 321634 $ (enabled)
我用于连接到数据库的代码:
$db_user = "uid";
$db_pass = "pd";
$db_connect = new PDO('mysql:host=locahost; dbname=practice; charset=UTF-8', $db_user, $db_pass);
if($db_connect){
print "connected to the db " . "<br />";
} else{
print "error connects to the db. " . mysql_error();
}
我收到的错误消息:
警告:PDO::__construct() [pdo.--construct]:php_network_getaddresses:getaddrinfo失败:没有这样的主机。位于C:\server\htdocs\html-exer\handle_reg3.php的第14行
警告:PDO::__construct() [pdo.--construct]:[2002] php_network_getaddresses: getaddrinfo失败:没有这样的主机。(尝试通过tcp://locahost:3306连接) 位于C:\server\htdocs\html-exer\handle_reg3.php的第14行
致命错误:Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: No such host is known. ' in C:\server\htdocs\html-exer\handle_reg3.php:14 Stack trace: #0 C:\server\htdocs\html-exer\handle_reg3.php(14): PDO->__construct('mysql:host=loca...', 'root', 'password') #1 {main} thrown in C:\server\htdocs\html-exer\handle_reg3.php on line 14
编辑:添加了一个问题,请求进一步的信息,这无疑很快就会被删除:
你好,Your Common Sense: 感谢代码片段。它帮助我解决了问题。看起来字符集可能是原因。这是我的连接到数据库的代码。
$dsn= 'mysql:host=localhost; dbname=practice; charset=utf8';
$db_user = "root";
$db_pass = "mypd";
$db_connect = new PDO($dsn, $db_user, $db_pass);
if($db_connect){
print "connected to the db " . "<br />";
}