【问题标题】:SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: No such host is known. PHP errorSQLSTATE [HY000] [2002] php_network_getaddresses:getaddrinfo 失败:不知道这样的主机。 PHP 错误
【发布时间】:2014-03-18 20:48:09
【问题描述】:
Notice: Array to string conversion in C:\xampp\xampp\htdocs\classes\DB.php on line 21

Warning: PDO::__construct(): php_network_getaddresses: getaddrinfo failed: No such host is known. in C:\xampp\xampp\htdocs\classes\DB.php on line 21
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: No such host is known.

它在 XAMPP 上时给我这个错误,但是当我把它放在实时服务器上时它工作正常,我知道数据库凭据是正确的,我正在使用当前版本的 XAMPP(截至昨天)用于 Windows 和在实时服务器上使用 Apache 2,两者都使用 MySql。

第 18-25 行:

// Takes values from 'config.php' and uses them to connect
private function __construct() {
    try {
        $this->_pdo = new PDO('mysql:host=' . Config::get('msql/host') . ';dbname=' . Config::get('mysql/db'), Config::get('mysql/username'), Config::get('mysql/password'));
    } catch(PDOException $e) {
        die($e->getMessage());
    }
}

这是设置数组的地方:

// Sets the config valuses
$GLOBALS['config'] = array(
    'mysql' => array(
        'host' => '127.0.0.1',
        'username' => 'root',
        'password' => 'password',
        'db' => 'site'
    ), 
    'remember' => array(
        'cookie_name' => 'hash',
        'cookie_expiry' => 604800
    ), 
    'session' => array(
        'session_name' => 'user'
    ) 
);

还有配置类:

class Config {
    public static function get($path = null) {
        if($path) {
            $config = $GLOBALS['config'];
            $path = explode('/', $path);

            foreach($path as $bit) {
                if(isset($config[$bit])) {
                    $config = $config[$bit];
                }
            }

            return $config;
        }

        return false;
    }   
}

【问题讨论】:

  • 尝试var_dump(Config::get('msql/host'))(以及其他人)看看你得到了什么。显然,(至少)其中一个是数组。
  • 摆脱了错误,但又弹出一个新的,“解析错误:语法错误,意外';'在 C:\xampp\xampp\htdocs\classes\DB.php 第 21 行"。
  • 您是否在var_dump 行之后添加了;?
  • $this->_pdo = new PDO('mysql:host=' . var_dump(Config::get('msql/host')) . ';dbname=' . var_dump(Config::get('mysql/db')), var_dump(Config::get('mysql/username')), var_dump(Config::get('mysql/password'));
  • *facepalm* var_dump() 是一个调试工具。它将打印出传递给它的变量的内容。它应该可以帮助您查看每个 Config::get() 调用返回的内容。

标签: php


【解决方案1】:

错别字:

    $this->_pdo = new PDO('mysql:host=' . Config::get('msql/host') . ';dbname=' . 
                                                       ^^^^^---no Y

$GLOBALS['config'] = array(
    'mysql' => array(
      ^---has a Y

【讨论】:

  • 没有摆脱这个错误,但是谢谢,它已经晚了,我几乎无法思考。
  • $dbhost = "localhost:3306";添加 MySQL 端口对我有用
【解决方案2】:
$this->_pdo = new PDO("mysql:host=".config::get('mysql/host').";dbname=".config::get('mysql/database') ,config::get('mysql/user'),config::get('mysql/password'));

请检查! "mysql:host=".config::get('mysql/host')." 之间有空格吗?由于空间,我遇到了同样的错误!

【讨论】:

  • 这是我的问题!我在“host=[hostname]”和“dbname=[database]”之间放了一个空格,而不是分号。谢谢!
【解决方案3】:

$dbhost = "本地主机:3306";添加 MySQL 端口对我有用

【讨论】:

  • 这被问题解决了。我打错了字并使用 ,port=yyy(而不是 ;port=yyy)来添加端口,这弄乱了主机名!
猜你喜欢
  • 2021-03-23
  • 2023-03-24
  • 1970-01-01
  • 2012-01-02
  • 1970-01-01
  • 2015-07-22
  • 1970-01-01
  • 2019-01-14
  • 2017-06-26
相关资源
最近更新 更多