Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php PDO异常-访问被拒绝_Php_Mysql_Pdo - Fatal编程技术网

Php PDO异常-访问被拒绝

Php PDO异常-访问被拒绝,php,mysql,pdo,Php,Mysql,Pdo,我正在用PHP构建一个登录系统,我的PDO出现了一个拒绝访问错误。我的凭据是正确的,因此我不确定是什么原因导致了这种情况 这是个例外 PHP致命错误:未捕获异常“PDOException”和消息 '拒绝用户'root'@'本地主机'SQLSTATE[HY000][1045]的访问' (使用密码:否)' 我还检查了权限,一切看起来都正常 这是我代码的一部分希望有人看到我没有看到的东西 文件init.php 我的DB.php的一部分 class DB { private static $_i

我正在用PHP构建一个登录系统,我的PDO出现了一个拒绝访问错误。我的凭据是正确的,因此我不确定是什么原因导致了这种情况

这是个例外

PHP致命错误:未捕获异常“PDOException”和消息 '拒绝用户'root'@'本地主机'SQLSTATE[HY000][1045]的访问' (使用密码:否)'

我还检查了权限,一切看起来都正常

这是我代码的一部分希望有人看到我没有看到的东西

文件init.php 我的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;
    }
File Index.php
文件Config.php中的静态方法没有在结构上迭代

您提供了array('mysql/username')作为路径,它被分解为foreach的'mysql'和'username',isset($config['mysql'])返回true,然后$config被设置为一个数组(从'mysql'键开始)。然后返回数组,而不是所需的值

        foreach($path as $bit){
            if(isset($config[$bit])){
                $config = $config[$bit]; // <-- Returns $config['mysql']
            }
        }
foreach($path作为$bit){
if(isset($config[$bit])){

$config=$config[$bit];//错误消息抱怨您没有使用密码登录(
使用密码:否
)。您是否尝试调试
Config
类以查看它是否将正确的值返回到
PDO
构造函数?问题在于“host”=>“127.0.0.1”,尝试将其更改为localhost。或者有一些密码连接到数据库,而您没有提供任何信息。@Anantkumarsing我尝试了这两种方法,加上127.0.0.1是localhost@Phylogenesis这就是我现在要做的。@Geo更仔细地观察,它看起来确实像您的
Config::get()
静态方法没有返回您想要的值。该错误具有MySQL PDO驱动程序使用默认主机(localhost)、用户名(当前用户)和密码(none)的所有特征。有效运行
新PDO('mysql:host=&dbname=',null,null)
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;
    }
require_once 'core/init.php';
$user = DB::getInstance();
        foreach($path as $bit){
            if(isset($config[$bit])){
                $config = $config[$bit]; // <-- Returns $config['mysql']
            }
        }