Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.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 未捕获错误:即使已初始化数据库对象,仍对null调用成员函数prepare()_Php - Fatal编程技术网

Php 未捕获错误:即使已初始化数据库对象,仍对null调用成员函数prepare()

Php 未捕获错误:即使已初始化数据库对象,仍对null调用成员函数prepare(),php,Php,我得到一个错误,说prepare函数是空的,我以前有过这个问题,可以解决它没有问题,但我不明白我现在做错了什么。致命错误显示为: 致命错误:未捕获错误:调用上的成员函数prepare() C:\xampp\htdocs\OOP\Artist System\classes\Db.php:43堆栈中为空 跟踪:#0 C:\xampp\htdocs\OOP\Artist System\classes\Artist.php(94): Db->query('选择名称,pl..,数组)#1 C:\xampp

我得到一个错误,说prepare函数是空的,我以前有过这个问题,可以解决它没有问题,但我不明白我现在做错了什么。致命错误显示为:

致命错误:未捕获错误:调用上的成员函数prepare() C:\xampp\htdocs\OOP\Artist System\classes\Db.php:43堆栈中为空 跟踪:#0 C:\xampp\htdocs\OOP\Artist System\classes\Artist.php(94): Db->query('选择名称,pl..,数组)#1 C:\xampp\htdocs\OOP\Artist System\index.php(11):Artist->select()#2 {main}在上的C:\xampp\htdocs\OOP\Artist System\classes\Db.php中抛出 第43行

Db类:

class Db
{
    private $servername;
    private $username;
    private $password;
    private $dbname;
    private $charset;

public function __construct($servername, $username, $password, $dbname, $charset)
{
    $this->servername = $servername;
    $this->username = $username;
    $this->password = $password;
    $this->dbname = $dbname;
    $this->charset = $charset;
}

private function connect()
{
    try {
        $dsn = "mysql:host=".$this->servername.";dbname=".$this->dbname.";charset=".$this->charset;
        $options = [
            PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
            PDO::ATTR_EMULATE_PREPARES   => false,
        ];
        $pdo = new PDO($dsn, $this->username, $this->password, $options);
        return $pdo;
    } catch (PDOException $e) {
        $e->getMessage();
    }
}

public function query($query, $data)
{
    $stmt = $this->connect()->prepare($query);
    $stmt->execute($data);
    $queryWords = explode(' ', trim($query));
    if ($queryWords[0] == "SELECT") {
        return $stmt->fetchAll();
    }
}
错误位于第93-94行的艺术家类:

public function select()
{
    $select = "SELECT name, playcount, listeners, image FROM artist";
    return $this->db->query($select, array());
}

检查数据库是否已连接或不尝试回显消息
echo$e->getMessage()在查看帖子时看到了修复,谢谢。