2014-02-19 37 views
1

正如写在标题我有这个问题。 我有数据让我连接到存储在文件中的数据库。得到这些相关信息后,我试图建立与数据库通信,但我收到警告mysql_connect:php_network_getaddresses:getaddrinfo失败:没有这样的主机是已知的使用文件值

警告:mysql_connect()函数:php_network_getaddresses:的getaddrinfo失败:没有这样的主机是已知的。在C:\ WAMP \ WWW \ jstool \ connect.php上线21

两次和连接的结果是什么,即使值是正确的(也就是,如果我尝试连接写下值它的工作原理)。 这里的txt文件:

localhost 
root 
pwd 

下面的代码:

ini_set("auto_detect_line_endings", true); 

$handle = fopen("config.txt", "r"); 
if ($handle) { 
    $i=0; 
    while (($line = fgets($handle)) !== false) { 
     $ln[$i]= $line; 
     $i++; 
    } 
} 

define("SERVER", $ln[0]); 
define("USER", $ln[1]); 
define("PASSWORD", $ln[2]); 
$db = mysql_connect(SERVER,USER,PASSWORD); 

if (!$db) { 
    [...] 
} 
else { 
    [.. reach database ..] 
} 

如果我只是写

$db = mysql_connect("localhost", "root", "pwd"); 

正如你可以看到包含在TXT文件中的值,它工作正常。

+0

在连接到数据库 –

+0

之前,请回显SERVER的值。我尝试过'echo SERVER。“”.USER。“”.PWD。“!”;'而且结果很好:'localhost root pwd!' – Jannuzzo

回答

4

尝试使用trim()

define("SERVER", trim($ln[0])); 
define("USER", trim($ln[1])); 
define("PASSWORD", trim($ln[2])); 

fgets()手册

读取结束时的长度 - 1个字节已被读出,或换行(其 包括在返回值)

所以你的阅读包​​括换行符。

+0

很棒。有效。我可以问你为什么这样吗? – Jannuzzo

+0

看到编辑回答 –

+0

好吧。由于回声并未打印出新行,所以我确信这不是问题所在。我错了!非常感谢伊恩! – Jannuzzo

相关问题