我在php中构建一个登录系统,我的PDO收到了拒绝访问的错误。我的凭据是正确的,所以我不确定是什么导致了这一点。
这是例外
PHP致命错误:未捕获的异常' PDOException'与消息 ' SQLSTATE [HY000] [1045]访问被拒绝用户' root' @' localhost' (使用密码:否)'
我还检查了phpMyAdmin中的权限,一切看起来都正确。
这是我的代码的一部分 希望有人看到我不会做的事情......
的init.php
<?php
session_start();
$GLOBALS['config'] = array(
'mysql' => array(
'host' => '127.0.0.1',
'username' => 'root',
'password' => '******',
'db' => '*****'
),
'remember' => array(
'cookie_name' => 'hash',
'cookie_expiry' => 604800
),
'session' => array(
'session_name' => 'user'
)
);
spl_autoload_register(function($class){
require_once 'classes/'.$class.'.php';
});
require_once 'functions/sanitize.php';
CONFIG.PHP
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;
}
}
我的部分DB.php
class DB {
private static $_instance = null;
private $_pdo,
$_query,
$_error = false,
$_results,
$_count = 0;
private function __construct(){
try{
$this->_pdo = new PDO('mysql:host='.Config::get('mysql/host').';dbname=' . Config::get('mysql/db'),Config::get('mysql/username'),Config::get('mysql/password'));
echo 'Connected!';
}catch(PDOException $e){
die($e->getMessage());
}
}
public static function getInstance(){
if(!isset(self::$_instance)){
self::$_instance = new DB();
}
return self::$_instance;
}
的index.php
require_once 'core/init.php';
$user = DB::getInstance();
答案 0 :(得分:0)
您在配置上的静态方法不会迭代结构。 你提供数组(&#39; mysql / username&#39;)作为路径,它被分解为 &#39; MySQL的&#39;和&#39;用户名&#39;对于foreach和isset($ config [&#39; mysql&#39;])返回true然后将$ config设置为一个数组(包含来自&#39; mysql&#39;键的所有内容)然后返回数组,而不是你想要的值。
foreach($path as $bit){
if(isset($config[$bit])){
$config = $config[$bit]; // <-- returns $config['mysql']
}
}