我一直在youtube上关注oop php的教程。他提出了一种方法来只获取查询的第一个结果。我试图获取所有结果,但我收到一条警告消息:试图获取非对象的属性
当我var_dump();
我的对象持有结果(我假设)时,它返回null
。
我做错了什么?
这是完整的代码:
数据库类:
class DB {
private $_results;
public function query($sql, $params = array()) {
$this->_error = false;
if ($this->_query = $this->_pdo->prepare($sql)) {
$x = 1;
if (count($params)) {
foreach ($params as $param) {
$this->_query->bindValue($x, $param);
$x++;
}
}
if ($this->_query->execute()) {
$this->_results = $this->_query->fetchAll(PDO::FETCH_OBJ);
$this->_count = $this->_query->rowCount();
} else {
$this->_error = true;
}
}
return $this;
}
// First result only:
public function first() {
return $this->results()[0];
}
// All results as I thought:
public function first() {
return $this->results();
}
public function results() {
return $this->_results;
}
}
项目类:
class Project {
private $_db,
$_data;
public function __construct() {
$this->_db = DB::getInstance();
}
public function find($user = null) {
if ($user) {
$data = $this->_db->get('user_project', array('uid', '=', $user));
if ($data->count()) {
$this->_data = $data->all();
return $this->data()->id;
}
}
}
public function data() {
return $this->_data;
}
}
我尝试通过这样做来访问它:
$project = new Project();
var_dump($project->find($user->data()->id)); // $user->data()->id is just the id of a user
答案 0 :(得分:0)
感谢你指出了正确的方向,我已经明白了。
$this->_data = $data->results();
return $this->_data;
然后我不得不循环它。解决。