php中的类未定义属性

php中的类未定义属性,php,class,pdo,undefined,prepare,Php,Class,Pdo,Undefined,Prepare,也许这是一个可能的重复,我在这里搜索了一些像这样的问题,但我已经尝试了所有的答案,但我仍然得到了这个错误 Notice: Undefined property: User::$_pdo in D:\xampp\htdocs\pengun\classes\DB.php on line 32 Fatal error: Call to a member function prepare() on a non-object in D:\xampp\htdocs\pengun\classes\DB.ph

也许这是一个可能的重复,我在这里搜索了一些像这样的问题,但我已经尝试了所有的答案,但我仍然得到了这个错误

Notice: Undefined property: User::$_pdo in D:\xampp\htdocs\pengun\classes\DB.php on line 32
Fatal error: Call to a member function prepare() on a non-object in D:\xampp\htdocs\pengun\classes\DB.php on line 32
这个错误呢

Notice: Undefined property: User::$_pdo in D:\xampp\htdocs\pengun\classes\DB.php on line 32
Fatal error: Call to a member function prepare() on a non-object in D:\xampp\htdocs\pengun\classes\DB.php on line 32
这是我的DB类

<?php
class DB {

    private $_pdo, $_query, $_result, $_count, $_row;

    public function __construct($host, $dbname, $user, $password) {
        $this->host = $host;
        $this->user = $user;
        $this->password = $password;
        $this->dbname = $dbname;

        try {
            $_pdo = new PDO('mysql:host=' . $this->host . ';dbname=' . $this->dbname, $this->user, $this->password);
        } catch (PDOException $e) {
            die($e->getMessage());
        }

        $_pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }

    public function select($fields, $table, $where = array()) {
        if(count($where) === 3) {
            $operators = array('=','>','<','>=','<=');

            $column     = $where[0];
            $operator   = $where[1];
            $value      = $where[2];

            if(in_array($operator, $operators)) {
                $sql = "SELECT {$fields} FROM {$table} WHERE {$column} {$operator} {$value}";
                if($this->_query = $this->_pdo->prepare($sql)) {
                    $this->_query->execute();
                    $this->_row = $this->_query->fetch();

                    print_r($this->_row);
                }
            }
        }
    }
}

因为在构造函数中,您只将
新PDO
赋值给只能在构造函数内部访问的局部变量。您必须使用:

$this->_pdo = new PDO('mysql:host=' . $this->host . ';dbname=' . $this->dbname, $this->user, $this->password);
...
$this->_pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

PDO
对象分配给构造函数中的局部变量。必须设置类变量

改变

$_pdo


在第13行和第18行。

请在这里写下您的错误。这应该可以很好地工作。我已经发布了它,看看我的问题,那就是错误。您是否在
用户
类中添加了另一个构造函数?如果您(仅出于测试目的)在创建新PDO实例后立即在构造函数中尝试
prepare()
execute()
fetch()
,这个错误是否也出现在这里?