使用PHP的PDO无法访问我的数据库

时间:2019-12-03 07:41:08

标签: php pdo

我有一个使用PSR-4的小项目。目前,我正在尝试从数据库中访问数据,但是运气不佳。

在我的根目录中,我具有以下目录结构

/ app / projectName / controller / app / projectName / model

在我的模型目录中,我有这个数据库文件。

    <?php
namespace projectName\model;

use \PDO;
use \PDOException;

class Database
{
    public static function connect(){
        /* DB Connection*/
//Yes that is the correct port
        $dsn = 'mysql:dbname=testData;port=25060;localhost';
        $user = 'root';
        $password = 'testAccount';


        try {
            $dbc = new PDO($dsn, $user, $password);
            return $dbc;
        } catch (PDOException $e) {
            return 'Connection failed: ' . $e->getMessage();
        }
    }

}

在models目录中也有以下文件。 这是我试图从中访问数据库的文件。

<?php


namespace projectName\model;
use projectName\model\Database;
use \PDO;
use \PDOException;


class TestDataModel
{

    private $dbc;

    public function __construct()
    {
       $connect = new Database; 
       $this->dbc = $connect::connect();
    }

    public function getData(){

        $this->dbc->prepare("SELECT * FROM testData.users");
        $this->dbc->execute();
        $fetched=$this->dbc->fetchAll();
        return $fetched;
    }
}

自动加载正在运行,如果我在index.php文件中的命名空间之外使用此代码,则可以访问数据库。当我开始使用PSR-4时,问题就开始了,不确定如何正确完成此工作。

1 个答案:

答案 0 :(得分:-1)

我将查询包裹在try / catch中,发现我遇到了身份验证错误。

我发现的错误是由于mysql使用caching_sha2_password而不是mysql_native_password引起的。

运行以下查询后,我能够连接和访问数据。

ALTER USER myuser IDENTIFIED WITH mysql_native_password BY 'mypassword';