提问者:小点点

使用PDO连接MySQL数据库不工作


我试图在我的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();
    }
    

    我收到的错误消息:

    • 警告:PDO::_-construct()[PDO.-construct]:php_-network_-getaddresses:getaddrinfo失败:未知此类主机。在C:\server\htdocs\html exer\handle\u reg3中。php第14行

    编辑:添加了询问更多信息的答案,毫无疑问将很快删除:

    你好你的常识:感谢代码片段。它帮助我解决了这个问题。看起来字符集可能是原因。这是我连接数据库的代码

    $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 />";
     }
    

  • 共3个答案

    匿名用户

    似乎您的服务器配置错误
    使用了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的默认端口号。