Codeigniter: вызов функции-члена result_array() для не-объекта, вызванного плохим столбцом?

#php #codeigniter #sqlsrv

#php #codeigniter #sqlsrv

Вопрос:

У меня возникла проблема с codeigniter для возврата результирующего набора. Когда я избегаю 1 столбца в моем выборе, результат правильный. Но когда я хочу включить столбец (описание), я получаю сообщение об ошибке, и мой результирующий набор поврежден. Кто-нибудь знает, как решить эту проблему. В столбце есть записи soms с символами типа amp;,’/ … Я мог бы подумать, что это вызывает проблему.

некоторые подробности:

 'char_set' => 'UTF-8',
'dbcollat' => 'Latin1_General_100_CS_AS',
  

Я уже безуспешно пытался изменить эти параметры.

Добавлен код редактирования:

функции get и get_by .

 public function get($id = NULL, $single = FALSE) {

    if($id != NULL){
        $this->db->where($this->_primary_key, $id);
        $method = 'row';
    }
    elseif($single == TRUE){
        $method = 'row';
    }
    else{
        $method = 'result';
    }

    if($_order_by != ''){
        if(!count($this->db->ar_orderby)){
            $this->db->order_by($this->_order_by);
        }

    }
    //$query = $this->db->query("Select Description from items WHERE Company = 'MINITFR'");

   // $array = $query->result_array();
   // return 'test';
   // var_dump($this->db->get_compiled_select($this->_table_name));
    return $this->db->get($this->_table_name)->result_array();
  // return $this->db->get($this->_table_name)->$method();
}

public function get_by($where, $single = FALSE) {
    $this->db->where($where);   
    return $this->get(NULL,$single);
}
  

функция в контроллере:

 public function show_items(){

    $this->load->model('item_m');
    $this->data['ajax_req'] = TRUE;
    $where = "Company = '".$this->session->userdata('company')."'";
    $this->data['item_list'] = $this->item_m->get_by($where,FALSE);
    $this->load->view('pages/details/components/item_list', $this->data);
}
  

Комментарии:

1. добавьте также свой код

2. Добавьте код .. в противном случае люди не смогут вам помочь

3. Добавьте код. Люди не могут помочь вам без кода

4. Извините, я теперь добавил код. Спасибо за вашу помощь.

Ответ №1:

используйте этот:

 return $this->db->get('table_name')->result_array();
  

Комментарии:

1. Хотя этот фрагмент кода может решить вопрос, включение объяснения действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос для читателей в будущем, и эти люди могут не знать причин вашего предложения кода.

2. Я добавил код выше, result_array() не работает.

3. да, но я обнаружил кое-что странное… если я изменю длину полей на более короткие поля, такие как varchar(500) -> varchar(50), он может запросить результаты. но когда я пытаюсь получить все столбцы, он снова выдает мне эту ошибку. Это как-то связано с длиной или со многими данными…

4. затем измените свой тип данных на text вместо varchar