0

我有一个非常奇怪的问题。我想从 XML 文件加载 MySQL 连接属性,但是当我尝试处理连接时出现此错误:

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 的字符集设置为 UTF-8,我的 SQL 服务器的字符集也是 UTF-8,而且如您所见,XML 文件使用 UTF-8。所以,我真的不知道有什么问题。

谢谢您的帮助,

汤姆科

4

2 回答 2

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

于 2013-10-17T19:21:36.670 回答
1

删除 access.xml 文件中的引号以:

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

它现在可以工作了

于 2013-10-17T19:38:06.577 回答