无法从数据数组访问值

时间:2018-02-17 17:14:15

标签: php codeigniter codeigniter-3

我想从 get_material()方法访问 unit_id ,该方法从模式 product_modal 返回数据..函数代码..

predicate

我想从上面的函数中使用 unit_id 的第二个函数是

public function get_material() {
          $query = $this->db->get('tbl_receivings_items');
          return $query->result();
    }

我从称为制造**的控制器访问这两个函数,其中两个函数都在** add_product()函数内调用,如下所示

public function get_material_item_unit($p_unit_id){
    $sql = "SELECT * FROM tbl_unit WHERE unit_id = ?";
    $q = $this->db->query($sql, $p_unit_id);
    if($q->num_rows() >0){
        return $q->result();
    }else{
        return null;
    }
}

add_product()功能正常工作意味着它将数据发送到db。 我的问题:每次我尝试通过while循环访问unit_id时都会出现未定义属性:stdClass :: $ unit_id 的错误。我将非常感谢你的帮助。

while循环

    public function add_product(){ 
    $formRules = array(
            array(
                'field' => 'prod_name',
                'label' => 'Product Name',
                'rules' => 'trim|required',
            ),array(
                'field' => 'partner',
                'label' => '',
                'rules' => 'trim',
            ),array(
                'field' => 'prod_qty',
                'label' => 'Quantity To Produce',
                'rules' => 'trim|required|greater_than_equal_to[1]',
            )
    );
    $this->form_validation->set_rules($formRules);
    if($this->form_validation->run() == TRUE){
        $can_be_consumed_value = $this->input->post('can_be_consumed');
        $can_be_solded_value = $this->input->post('can_be_sold');
        if($can_be_consumed_value == false){
            $can_be_consumed_value ="0";
        }else{
            $can_be_consumed_value ="1";
        }
        if($can_be_solded_value == false){
            $can_be_solded_value ="0";
        }else{
            $can_be_solded_value ="1";
        }
        $data =array(
                'prod_name' => $this->input->post('prod_name'),
                'can_be_consumed' => $can_be_consumed_value,
                'can_be_sold' => $can_be_solded_value,
                'prod_partner' => $this->input->post('partner'),
                'created_by' => $this->input->post('created_by'),
                'date_created' => date('Y-m-d'),
                'prod_desc' => $this->input->post('prod_desc'),
                'prod_qty' =>$this->input->post('prod_qty')
            );
          $query = $this->product_model->add_product($data);
          if($query){
                $data['initial_data'] = $this->product_model->get_product_data($query);
                $data['material_list'] = $this->product_model->get_material();
                $m_list = $this->product_model->get_material();
                if($m_list->num_rows() > 0)
                {
                    foreach($m_list->result() as $m){
                        $data['unit_list'] = $this->product_model->get_material_item_unit($m->unit_id);
                    }
                }
                $this->session->set_flashdata('success_msg', 'Product Created Successfully');
                $this->load->view('manufacture/manufacture_step_2', $data,'refresh');
          }else{
             $this->session->set_flashdata('error_msg', 'Sorry! Fail to create product');
              redirect('manufacture');
          } 
    }else{
        echo '<div class="alert alert-danger error">'.validation_errors().'</div>';
    }
}

1 个答案:

答案 0 :(得分:0)

我不知道您在PHP中使用的SQL扩展是什么,但通常当您获得查询结果时,这些结果是一组值。

您正在尝试将数据作为对象获取,这就是PHP向您显示此错误的原因,因为var $ m不是对象。

您可以尝试执行var_dump($m),您可以看到变量的类型和结构。如果$ m是数组,则必须使用$m['columnName']来获取值。