不知道这样的主机——无法识别本地主机

Posted

技术标签:

【中文标题】不知道这样的主机——无法识别本地主机【英文标题】:No such host is known-- Localhost not recognized 【发布时间】:2015-10-04 15:04:15 【问题描述】:

我是 php 新手。我一直无法通过 PHP 连接和使用数据。我已经仔细检查并查看了这个网站的信息,但我没有找到太多。下面是错误和代码。

我输入了正确的用户名和密码。我什至创建了一个新的用户名和密码只是为了确保。我没有其他想法为什么它不会连接到我的本地主机。我很想看到任何关于可能出现的错误的反馈,谢谢!

错误显示:

警告:PDO::__construct(): php_network_getaddresses: getaddrinfo failed: 不知道这样的主机。在第 26 行的 C:\xampp\htdocs\website\Practice\mysqli\connection.inc.php 中

致命错误:未捕获的异常 'PDOException' 带有消息 'SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: No such host is known。 ' 在 C:\xampp\htdocs\website\Practice\mysqli\connection.inc.php:26 堆栈跟踪:#0 C:\xampp\htdocs\website\Practice\mysqli\connection.inc.php(26): PDO ->__construct('mysql:host=$hos...') #1 C:\xampp\htdocs\website\Practice\mysqli\pdo.php(5): dbConnect('read') #2 main 抛出在第 26 行的 C:\xampp\htdocs\website\Practice\mysqli\connection.inc.php $result = $conn->query($sql)or die(mysqli_error());

connection.ini.php

function dbConnect($usertype, $connectiontype = 'mysqli') 
    $host = 'localhost';
    $db = 'student';
    if ($usertype == 'read') 
        $user = 'user';
        $pwd = 'pass';
    

    elseif ($usertype == 'write') 
        $user = 'root';
        $pwd = 'password';
    
    else 
        exit('Unrecognized connection type');
    
    //Connection Code
    if ($connectionType == 'mysqli') 
        return new mysqli($host, $user, $pwd, $db) or die ('Cannot open database');
         
else 

        try 
            return new PDO('mysql:host=$host;dbname=$db, $user, $pwd');
        
        catch(PDOExecption $e) 
            echo 'Cannot connect to database';
            exit;
        
    

?>

mysqli.php

?php
require_once('connection.inc.php');
$conn = dbConnect('read');
$sql = 'SELECT * FROM guestbook';

$result = $conn->query($sql)or die(mysqli_error());
$numRows = $result->num_rows;
?>
<!DOCTYPE html>
<html>
<p> A total of <?php
echo $numRows;
?>
records were found.</p>
</html>

【问题讨论】:

mysql_connect: php_network_getaddresses: getaddrinfo failed: No such host is known using file values的可能重复 【参考方案1】:

单引号括起来的字符串不会被解析,因此其中的变量不会被它们的值替换。在 DSN 字符串中使用双引号而不是单引号:

return new PDO("mysql:host=$host;dbname=$db, $user, $pwd");

【讨论】:

感谢您解释错误所在,而不仅仅是指出解决方案!你得到了我的支持。【参考方案2】:
function dbConnect($usertype, $connectiontype = 'mysqli') 
$host = 'localhost';
$db = 'student';
if ($usertype == 'read') 
    $user = 'user';
    $pwd = 'pass';


elseif ($usertype == 'write') 
    $user = 'root';
    $pwd = 'password';

else 
    exit('Unrecognized connection type');

//Connection Code
if ($connectionType == 'mysqli') 
    return new mysqli($host, $user, $pwd, $db) or die ('Cannot open database');
     
else 

    try 
        return new PDO("mysql:host=$host;dbname=$db", $user, $pwd);
    
    catch(PDOException $e) 
        echo 'Cannot connect to database';
        exit;
    


?>

你正在使用

 return new PDO('mysql:host=$host;dbname=$db, $user, $pwd');

但是你需要使用双引号来使用像

这样的变量
return new PDO("mysql:host=$host;dbname=$db", $user, $pwd);

或者你可以使用这个:

return new PDO('mysql:host='.$host.';dbname='.$db, $user, $pwd);

您可以在此处查看更多信息:Pdo Connection 和 Variable inside double quotes

【讨论】:

恭喜,你是唯一没有写错代码的人。 谢谢!我不认为我会在那里出错。我现在可以使用 PDO 访问数据库了。 Np,我想通知您,您在 catch() 中拼错了 PDOException

以上是关于不知道这样的主机——无法识别本地主机的主要内容,如果未能解决你的问题,请参考以下文章

Firebase托管中无法识别角度材料

Linux:无法识别 Spring Cloud Web 应用程序的主机名

删除主机时,iOS 可达性无法识别

将 postgresql 本地复制到远程数据库(都带有密码) - 错误:无法识别选项“区域设置”

vmware不识别无线网卡

Tomcat 8 - 虚拟主机不重新编译 JSP 或识别更新的类