Php 从控制器中的查询结果获取值
我有一个模型,我运行一个查询并从数据库中选择表字段,这个查询的结果在控制器中接收。我正在尝试提取类型_id,它是来自此结果的一个id,并将其传递给同一模型中的另一个函数,该函数然后根据此类型_id从数据库表中选择图像路径。但我收到一个错误“尝试获取非对象的属性” 模型 控制器Php 从控制器中的查询结果获取值,php,mysql,codeigniter,Php,Mysql,Codeigniter,我有一个模型,我运行一个查询并从数据库中选择表字段,这个查询的结果在控制器中接收。我正在尝试提取类型_id,它是来自此结果的一个id,并将其传递给同一模型中的另一个函数,该函数然后根据此类型_id从数据库表中选择图像路径。但我收到一个错误“尝试获取非对象的属性” 模型 控制器 public function index() { $this->load->model("Interior_listing_model","interior");
public function index()
{
$this->load->model("Interior_listing_model","interior");
$data['articles'] = $this->interior->interior_list();
$data['particles'] = $this->interior->image_list($data['articles']->type_id);
// Load Interior Listing View
$this->load->view("interior/interior",$data);
}
在这个控制器中,$data['articles']->type_id我得到了上面提到的错误
看法
span class=“text center”>
图像路径?>“width=”100%“>
内部列表()上的“return”语句正在返回一个数组:
return $query['resulty']->result_array();
result_array()是一个CI函数,它返回一个行数组,其中每行是结果中的一条记录
因此,您试图访问一个名为type_id的对象属性,但处理的是数组,而不是对象
由于$data['articles']中可能有两行或更多行,因此您需要确定此处的预期结果
例如,您可能正在寻找以下内容:
$data['articles'] = $this->interior->interior_list();
foreach($data['articles'] as $idx => $article)
{
$data['particles'] = array_merge($data['particles'], $this->interior->image_list($article["type_id"]));
}
至少需要进行两项更改 在您的模型更改中
return $query['resulty']->result_array();
到
result()
返回一个对象数组,其中每个对象都是查询中的一行
因为$data['articles']
是一个对象数组,您需要引用数组中要使用的项
改变
$data['particles'] = $this->interior->image_list($data['articles']->type_id);
到
这将只使用模型结果的第一行。我怀疑这不会实现您想要的一切。但它应该会停止错误。$data['articles']['type_id']试试看,现在它说,消息:未定义索引:type_id$data['articles'][0]['type_id']。如果您使用json_encodedjson-{“articles”向我显示结果,这很容易:[{”type_id']“:“2”,“名称”:“Raj Mondal”,“类型”:“Interior”,“location”:“Kolkata”,“profile_pic”:“ned_flanders.gif”,“cover_image”:“cover2.jpeg”,“category_id”:“1”},{“type_id”:“3”,“name”:“Rahul Bajaj”,“type”:“Interior”,“location”:“Pan India”,“profile_pic”:“cat1.jpeg”,“cover_image”:“potter.jpg”,“category_id”:“1”}使用$data['articles][0][type_id']给我消息:调用未定义的方法CI_DB_mysqli_result::get()执行上述操作后,错误消失了,但我没有获得图像,因为它显示消息:未定义变量:粒子,它无法读取粒子。[“粒子”]=>array(3){[0]=>object(stdClass){[“id”=>string(2)“13”[“image_path”]=>string(11)“design1.jpg”[“类型id”]=>string(1)“3”}[1]=>object(stdClass){25(3){[“id”]=>string(2)“14”[“image\u path”]=>string(11)“design2.jpg”[“type\u id”]=>string(1)“3”}[2]=>object(stdClass){“id”=>string(2)“15”[“image\u path”=>string(11)”design3.jpg”[“type\u id”=>string(1)}}即使粒子中有值,它也表示无法读取粒子。未定义变量:粒子表示您试图通过名为$particles的变量访问粒子。您尚未向我们展示执行此操作的代码,但该代码需要识别上述结构,并在每个记录中查找详细信息子数组$data['articles']我已经添加了我的查看页面。它给我同样的错误消息:在我修改答案之前,尝试获取非object属性。请告诉我,
$this->interior->interior_list();
会返回几行吗?
return $query['resulty']->result_array();
return $query['resulty']->result();
$data['particles'] = $this->interior->image_list($data['articles']->type_id);
$data['particles'] = $this->interior->image_list($data['articles'][0]->type_id);