2014-03-19 226 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