我正在尝试在我的 PHP 代码中使用 PDO 模块来连接到数据库。我已经阅读并搜索了类似的主题,但我无法弄清楚我做错了什么。请帮我解决问题。
Apache版本:Apache/2.2.21 (Win32) PHP/5.3.10
在 php.ini 文件中,我取消注释该行:extension=php_mysql.dll
2a. phpinfo 函数显示“加载的配置文件”位置是 C:\php\php.ini
2b。phpinfo 函数显示的 PDO 驱动程序信息:在 PDO 部分下:PDO 驱动程序-->Mysql (enabled) 在 PDO Driver for MySQL 部分下:客户端 API 版本-->mysqlnd 5.0.8-dev - 20102224 - $Revision: 321634 $ (启用)
我用来连接数据库的代码
$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 failed: 没有这样的主机是已知的。在第 14 行的 C:\server\htdocs\html-exer\handle_reg3.php
- 警告:PDO::__construct() [pdo.--construct]: [2002] php_network_getaddresses: getaddrinfo failed: 没有这样的主机是已知的。(尝试通过 tcp://locahost:3306 连接)在第 14 行的 C:\server\htdocs\html-exer\handle_reg3.php
- 致命错误:未捕获的异常 'PDOException' 带有消息 'SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: No such host is known。' 在 C:\server\htdocs\html-exer\handle_reg3.php:14 堆栈跟踪:#0 C:\server\htdocs\html-exer\handle_reg3.php(14): PDO->__construct('mysql:host =loca...', 'root', 'password') #1 {main} 在第 14 行的 C:\server\htdocs\html-exer\handle_reg3.php 中抛出
编辑:添加了答案,要求提供更多信息,这些信息无疑将很快被删除:
您好您的常识:感谢您的代码片段。它帮助我解决了这个问题。看来字符集可能是原因。这是我连接到数据库的代码
$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 />";
}