Php PDO无法访问数据库连接实例

Php PDO无法访问数据库连接实例,php,mysql,pdo,Php,Mysql,Pdo,我有一个数据库包装器和一个获取PDO连接实例的静态方法。但是,当我想进行PDO查询时,我无法访问它 下面是DB类的一部分: 我的问题是: 但是,当我运行查询时,出现了以下错误: 致命错误:调用未定义的方法DB::prepare 我做错了什么?有什么帮助吗 但当我这样做的时候,它就起作用了 这怎么可能呢?如果在对象DB上调用prepare,而不是在PDO上,我建议将getter添加到类DB中: public function getPDO(){ return $this->_pdo;

我有一个数据库包装器和一个获取PDO连接实例的静态方法。但是,当我想进行PDO查询时,我无法访问它

下面是DB类的一部分:

我的问题是:

但是,当我运行查询时,出现了以下错误:

致命错误:调用未定义的方法DB::prepare

我做错了什么?有什么帮助吗

但当我这样做的时候,它就起作用了


这怎么可能呢?

如果在对象DB上调用prepare,而不是在PDO上,我建议将getter添加到类DB中:

public function getPDO(){ 
  return $this->_pdo;
}
并修改准备查询:

$db = DB::getInstance();
$statement = $db->getPDO()->prepare(...);

如果在对象DB上调用prepare,而不是在PDO上调用prepare,我建议将getter添加到类DB中:

public function getPDO(){ 
  return $this->_pdo;
}
并修改准备查询:

$db = DB::getInstance();
$statement = $db->getPDO()->prepare(...);

DB类的prepare方法在哪里?@chumkiu可能不在。因为这就是错误所说的。您在$this->db变量上分配pdo对象,并将$\u实例静态变量返回为db对象,显然您的$\u实例是空的,您准备的不是pdo方法吗??我所知道的是PDO方法,这就是为什么我没有定义它。我在某个没有定义的地方使用了它,它工作了。我的editprepare是一个PDO方法。但是$db不是PDO实例。db类上的prepare方法在哪里?@chumkiu可能不存在。因为这就是错误所说的。您在$this->db变量上分配pdo对象,并将$\u实例静态变量返回为db对象,显然您的$\u实例是空的,您准备的不是pdo方法吗??我所知道的是PDO方法,这就是为什么我没有定义它。我在某个没有定义的地方使用了它,它工作了。我的editprepare是一个PDO方法。但是您的$db不是PDO实例。您在$this->db变量上分配PDO对象,并将$\实例静态变量返回为db对象,显然您的$\实例是空的。您在$this->db变量上分配PDO对象,并将$\实例静态变量返回为db对象,显然您的$\实例是空的
$db = DB::getInstance();
$statement = $db->getPDO()->prepare(...);
private function __construct() {
    try {
         self::$_instance = new PDO('mysql:host='.Config::get('mysql/host').';dbname='.Config::get('mysql/db'),Config::get('mysql/username'),Config::get('mysql/password'));

    } catch (PDOException $e) {
        die($e->getMessage());

    }
}
public static function getInstance() {
    if(!isset(self::$_instance)) {
         new DB();

    }
    return self::$_instance;
}