【发布时间】: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