我有一个非常奇怪的问题。我想从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
答案 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>
它现在可以使用