0

私は本当に奇妙な問題を抱えています。XML ファイルから MySQL 接続属性をロードしたいのですが、接続を処理しようとすると次のエラーが発生しました。

php_network_getaddresses: getaddrinfo failed (Error number: 2002)

そして、なぜこれは奇妙ですか?xml ファイルからではなく、自分で mysql_connect() ステートメントを書き留めるだけで機能するためです。

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 に答える