无法通过php连接到sql。获取错误连接失败:php_network_getaddresses:getaddrinfo failed:没有这样的主机。

时间:2018-03-20 14:54:18

标签: php mysql

我已经搜索了谷歌和堆栈流,并且无法深入到这个问题的底部。我无法获得以下PHP代码连接到SQL。它是一个简单的php web文档,我用来测试一些东西。 SQL是sqlexpress 2016,它在安装了php 7.x的IIS上运行。 PHP代码执行正常,因此我猜测它与代码或数据库的关系。我尝试过的事情:

  • 我在php中运行了一个echo以解析名称,它解决了它。
  • 我使用tcp从一个单独的服务器连接到sql server,并且连接正常。
  • 我已尝试过PDO连接和mysqli,两者都返回同样的错误。

我使用的PDO代码是:

<?php
$servername = 'RemoteServerName\SqlInstance';
$username = 'iislogon';
$password = 'password';

try {
$conn = new PDO("mysql:host=$servername;dbname=netdata", $username, 
$password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully"; 
}
catch(PDOException $e)
{
echo "Connection failed: " . $e->getMessage();
}
?>

mysqli代码是:

<?php
$servername = 'RemoteServerName\SqlInstance';
$username = 'iislogin';
$password = 'password';
$dbname = 'netdata';
?>
<?php $conn = new mysqli($servername, $username, $password, $dbname); ?>

<?php 
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
} 
echo "Connected successfully";?>

两者都返回未找到主机的相同错误。还有哪些其他问题?我是新的编码PHP所以任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

从mysql开始的mysqli和PDO:应该连接到MySQL,而不是SQLExpress。

如果您想使用SQLExpress,则应使用sqlsrv_connect之类的内容,或将pdo字符串调整为SQLExpress compatible one

同时查看this thread

答案 1 :(得分:1)

请查看此说明http://php.net/manual/en/pdo.construct.php,具体而言:

通常,DSN包含PDO驱动程序名称,后跟冒号,后跟PDO驱动程序特定的连接语法。有关详细信息,请参阅PDO驱动程序特定的文档。

你确定你的dsn是正确的并且启用了PHP模块吗?见http://php.net/manual/en/ref.pdo-mysql.php

答案 2 :(得分:0)

我认为你没有用另一个反斜杠来逃避你的反斜杠。试试这个:

<?php
$servername = 'RemoteServerName\\SqlInstance';
?>