2013-10-17 63 views
0

我有一個非常奇怪的問題。我要加載的MySQL連接從XML文件的屬性,但是當我嘗試處理方面,我得到這個錯誤:PHP - MySQL - 從XML加載數據

php_network_getaddresses: getaddrinfo failed (Error number: 2002) 

爲什麼這是很奇怪嗎?因爲如果我自己寫下mysql_connect()語句,而不是從xml文件中寫入,它就可以工作。

的XML文件看起來像這樣:

<?xml version="1.0" encoding="UTF-8"?> 
<data> 
    <host>"localhost"</host>  
    <username>"root"</username> 
    <password>"password"</password> 
    <database>"account"</database> 
</data>  

PHP的一部分:

function connection() { 
    $file = 'access.xml'; 
    if(file_exists($file)) { 
     $xml = simplexml_load_file($file); 
     $host = $xml->host; 
     $name = $xml->username; 
     $password = $xml->password; 
     $database = $xml->database; 

     $connect = mysql_connect($host,$name,$password); 
     //mysql_select_db($database) or die("Adatbázis csatlakozás sikertelen."); 
     } else { 
      print "XML betöltése sikertelen. - MySQL csatlakozás sikertelen."; // Error message in hungarian language 
     } 
} 

我想過也許是字符集引起該問題,但沒有,因爲我已經設置PHP的charset到UTF-8,我的SQL服務器的字符集也是UTF-8,正如你所看到的那樣,XML文件使用UTF-8。所以,我真的不知道有什麼問題。

感謝您的幫助,

TOMCO

回答

2

我有一個偷渡懷疑它的報價在你的XML。嘗試:

<?xml version="1.0" encoding="UTF-8"?> 
<data> 
    <host>localhost</host>  
    <username>root</username> 
    <password>password</password> 
    <database>account</database> 
</data> 

行情是在你的代碼,用於識別字符串...但XML解析器已經知道它的工作與字符串,所以它會把你給了它作爲文本的部分的報價。因此,而不是擴大到:

$connect = mysql_connect('localhost','account','password'); 

你實際上擴大到:

$connect = mysql_connect('"localhost"', '"account"', '"password"'); 

雖然PHP不能找到一個名爲"localhost"服務器,它不應該有找到一個叫localhost問題。

+0

非常感謝您! – werck

1

刪除您access.xml文件中的引號:

<?xml version="1.0" encoding="UTF-8"?> 
<data> 
    <host>localhost</host>  
    <username>root</username> 
    <password>password</password> 
    <database>account</database> 
</data> 

,將工作現在