2014-03-19 187 views
0

我试图使用PHP中的PDO类连接到mySQL数据库。无法通过PHP PDO类连接到数据库

这里是我的代码:脚本是否被一个直播服务器或测试服务器上运行

// 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(); 
    } 
} 

的$局部变量定义,并且决定。

在我的本地环境中运行时,everthing正常工作,但在我的实时服务器上,它回显出“连接到实时数据库是不可能的。”从catch块。

我已经联系了我的主机提供商(godaddy),他们认为这是一个编码错误。显然,我也检查了100次主机名,dbname,用户名和密码,这都是正确的。我只是看不到问题!

我该怎么做?

+0

在你'Seconde系列块catch',添加以下代码,并显示我们的输出:'回声$ E->的getMessage()'; –

+0

在你的第二个'try {}'你的DB_HOST应该也是'localhost'。 – Zy0n

回答

1

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

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

谢谢。它总是你可以无视的小细节。 – Frank