2013-12-11 155 views
0

我不是那麼棒的PDO,一直在學習它來更新我的PHP標準,我認爲我已經破解了,但是我不斷收到錯誤。PHP,PDO連接語句

我已經使用過這個,它的工作原理,沒有什麼我可以看到已經改變。

 echo "before connect"; 
     $conn = new PDO('mysql:host=hostadd;dbname=dbname', $username, $password); 
     $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     echo "past connect"; 

這是我的代碼,密碼和服務器地址都是正確的,就像在此語句前定義的變量值一樣。

我從來沒有使它的過去連接的回聲,雖然,我總是得到這個錯誤:

before connectError: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known 

誰能告訴我,我做了什麼愚蠢的錯誤?

+0

你確定'host = hostadd'正確嗎? – Antony

+0

這是一個網絡相關的問題。你能從你的機器到達DB服務器嗎?或者,也許DNS不解析該主機名? – Leonardo

+0

我已經檢查了7次,主機地址是正確的,我可以通過phpmyadmin和我的主機控制面板訪問它。我也可以訪問該網站。 – TryingToBeZen

回答

0

這個問題與PDO無關。要連接互聯網服務,您必須提供有效的工作主機名。

-1

如果您已經忙於更新您的編碼標準,請set the PDO error mode to return warnings或相應地處理例外情況。

除此之外,問題是propably,「hostadd」首先不是一個可達的主機名。您希望使用本地主機或您的託管服務提供商提供的其他數據庫服務器。如果你想將它存儲在一個值中,你忘記了連接字符串。 PDO試圖到達「hostadd」,這將失敗,就像當你進入你的終端,並輸入

ping hostadd 
+0

在使用try-catch塊來捕獲異常時沒有任何**正確 –

+0

然而,當調試**時,它是最好的做法**。與全局異常處理程序相比,您可以獲得更高級別的詳細信息。 –

+0

有人顯然在這件事情上委屈你。水平是完全一樣的。 –