PHP - MySQL - 从XML加载数据

时间:2013-10-17 19:18:59

标签: php mysql xml

我有一个非常奇怪的问题。我想从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
      }
}

我想也许charset会导致问题,但是没有,因为我已经将PHP的charset设置为UTF-8,我的SQL服务器的charset也是UTF-8,正如你所看到的,XML文件使用UTF -8。所以,我真的不知道这是什么问题。

感谢您的帮助,

TOMCO

2 个答案:

答案 0 :(得分: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的服务器时应该没有问题。

答案 1 :(得分:1)

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

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

它现在可以使用