我试图在我的PHP代码中使用PDO模块连接到数据库。类似的题目我都看了,也搜了,就是搞不清自己到底做错了什么。请帮我解决这个问题。
>
Apache版本:Apache/2.2。21(Win32)PHP/5.3。10
在php中。在ini文件中,我取消了对以下行的注释:extension=php\u mysql。动态链接库
2a。phpinfo函数显示“加载的配置文件”位置为C:\php\php。伊尼
2b。phpinfo功能显示的PDO驱动程序信息:在PDO部分:PDO驱动程序-
我用来连接数据库的代码
$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();
}
我收到的错误消息:
编辑:添加了询问更多信息的答案,毫无疑问将很快删除:
你好你的常识:感谢代码片段。它帮助我解决了这个问题。看起来字符集可能是原因。这是我连接数据库的代码
$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 />";
}
似乎您的服务器配置错误
使用了127.0。0.1
而不是DSN中的localhost
。
$dsn = 'mysql:host=127.0.0.1; dbname=practice; charset=utf8';
$pdo = new PDO($dsn, $db_user, $db_pass, $opt);
您需要读取错误消息
它表示您的PDO在连接本地主机时遇到问题。所以,您需要更改PDO连接字符串的地址。
另外,您使用了错误的字符集名称,我已经更正了
另外,mysql\u error()
对PDO没有用处。不需要调用此函数,您已经抛出了一个错误
以防其他人从谷歌登陆。我遇到了完全相同的问题,重新启动apache修复了它。
如果以上所有答案都不能解决您的问题,请尝试为您的DSN指定端口号:
$this->con = new PDO("mysql:host=localhost;port=3306;dbname=my_db","root","secret");
这里我使用3306,因为它是Mysql的默认端口号。