【问题标题】:Can't connect to database through PHP PDO class无法通过 PHP PDO 类连接到数据库
【发布时间】:2014-03-19 10:14:59
【问题描述】:

我正在尝试使用 PHP 中的 PDO 类连接到我的 mySQL 数据库。

这是我的代码:

// Connects to Our Database via PDO.
if($local) {
    try {
        $db = new PDO("mysql:=localhost;dbname=bbc_archive;port=3306", "root", "");
        $db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
        $db->exec("SET NAMES 'utf8'");
        } catch(Exception $e) {
            echo "Connection to the DataBase was not possible. ";
            die();
        }
    } else {
    try {
        $db = new PDO("mysql:=bbcarchive.db.11505263.hostedresource.com;dbname=bbcarchive", "bbcarchive", "myPassword");
        $db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
        $db->exec("SET NAMES 'utf8'");
    } catch(Exception $e) {
        echo "Connection to the live DataBase was not possible. ";
        die();
    }
}

$local 变量是之前定义的,用于确定脚本是在实时服务器还是测试服务器上运行。

在我的本地环境中运行时,一切正常,但在我的实时服务器上,它回显“无法连接到实时数据库”。来自 catch 块。

我已经联系了我的主机提供商 (godaddy),他们认为这是一个编码错误。很明显,我还检查了主机名、数据库名、用户名和密码 100 次,一切都正确。我就是看不出问题!

我该怎么做?

【问题讨论】:

  • 在第二个 catch 块中,添加此代码并向我们展示输出:echo $e->getMessage();
  • 在你的第二个try{} 你的DB_HOST 也应该是localhost

标签: php mysql database pdo


【解决方案1】:

您的 DSN 似乎不正确。 The documentation on MySQL DSNs 表示它应该看起来像这样:

$db = new PDO("mysql:host=localhost;dbname=bbc_archive;port=3306", "root", "");

【讨论】:

  • 谢谢。总是有一些小细节是你可以视而不见的。
猜你喜欢
  • 2015-12-09
  • 2011-12-21
  • 2010-10-02
  • 2012-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-10
  • 2016-03-27
相关资源
最近更新 更多