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()
,这个错误是否也出现在这里?