Php 从控制器中的查询结果获取值

Php 从控制器中的查询结果获取值,php,mysql,codeigniter,Php,Mysql,Codeigniter,我有一个模型,我运行一个查询并从数据库中选择表字段,这个查询的结果在控制器中接收。我正在尝试提取类型_id,它是来自此结果的一个id,并将其传递给同一模型中的另一个函数,该函数然后根据此类型_id从数据库表中选择图像路径。但我收到一个错误“尝试获取非对象的属性” 模型 控制器 public function index() { $this->load->model("Interior_listing_model","interior");

我有一个模型,我运行一个查询并从数据库中选择表字段,这个查询的结果在控制器中接收。我正在尝试提取类型_id,它是来自此结果的一个id,并将其传递给同一模型中的另一个函数,该函数然后根据此类型_id从数据库表中选择图像路径。但我收到一个错误“尝试获取非对象的属性”

模型

控制器

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);