非对象的类查询PDO属性 [英] Class query PDO property of non-object
本文介绍了非对象的类查询PDO属性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我不明白自己的错误,因为我肯定有反对.请在下面查看我的 print_r :
I not understand my error because I'm sure to have an oject.Look my print_r below:
注意:尝试在第21行的C:\ xampp \ htdocs \ travel_mvc \ cockpit \ index.php中获取非对象的属性
Notice: Trying to get property of non-object in C:\xampp\htdocs\travel_mvc\cockpit\index.php on line 21
第21行并具有:
echo $row->tz_name.'<br>';
我的print_r:
Array
(
[0] => stdClass Object
(
[tz_name] => Africa/Abidjan
)
[1] => stdClass Object
(
[tz_name] => Africa/Accra
)
[2] => stdClass Object
(
[tz_name] => Africa/Addis_Ababa
)
[3] => stdClass Object
(
[tz_name] => Africa/Algiers
)
[4] => stdClass Object
(
[tz_name] => Africa/Asmara
)
)
在我的课堂上,我有:
class model{
private $fields = '*';
private $table = '';
private $where = '';
private $and = '';
private $limit = '';
private $order = '';
private $type_order = 'DESC';
private $d = array();
public function find($data = array()){
if(isset($data['fields'])){
$this->fields = $data['fields'];
}
$this->table = $data['table'];
if(isset($data['where'])){
$this->where = ' WHERE '.$data['where'];
}
if(isset($data['and'])){
$this->and = ' WHERE '.$data['and'];
}
if(isset($data['limit'])){
$this->limit = ' LIMIT '.$data['limit'];
}
if(isset($data['order'])){
$this->order = ' ORDER BY '.$data['order'].$type_order;
}
$query = Db::getInstance()->prepare('SELECT '.$this->fields.'
FROM '.$this->table.$this->where.
$this->and.$this->order.$this->limit.'');
$query->execute();
while($data = $query->fetchAll(PDO::FETCH_OBJ)){
$d[] = $data;
}
return($d);
}
}
当我调用函数时:
$model = new model();
$sql = $model->find(array(
'fields'=>'tz_name',
'table'=>'times_zones',
'limit'=>5
));
foreach($sql as $row):
echo $row->tz_name.'<br>';
endforeach;
echo '<pre>';
print_r($row);
echo '</pre>';
推荐答案
PDOStatement::fetchAll()
已经返回一个数组,因此您无缘无故地将结果集双重嵌套.
PDOStatement::fetchAll()
already returns an array so you're just double-nesting the result set for no reason.
在您的model::find()
方法中,更改以下行...
In your model::find()
method, change these lines...
while($data = $query->fetchAll(PDO::FETCH_OBJ)){
$d[] = $data;
}
return($d);
到
return $query->fetchAll(PDO::FETCH_OBJ);
您还可以删除model
$d
属性(不是您一直在使用它).
You can also remove the model
$d
property (not that you were using it anyway).
这篇关于非对象的类查询PDO属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文