不知道这样的主机——无法识别本地主机
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以上是关于不知道这样的主机——无法识别本地主机的主要内容,如果未能解决你的问题,请参考以下文章
Linux:无法识别 Spring Cloud Web 应用程序的主机名