【问题标题】:Codeigniter: Call to a member function result_array() on a non-object caused by bad column?Codeigniter:在由坏列引起的非对象上调用成员函数 result_array()?
【发布时间】:2017-02-16 17:39:36
【问题描述】:

我在 codeigniter 中遇到了返回结果集的问题。当我在选择中避免 1 列时,结果是正确的。 但是当我想包含列(描述)时,我得到错误并且我的结果集已损坏。任何人都知道如何解决这个问题。该列有带有 &,'/... 等字符的 soms 记录,我可能认为这会导致问题。

一些细节:

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

【问题讨论】:

  • 也添加您的代码
  • 添加代码..否则人们不可能帮助你
  • 添加代码。没有代码,人们不可能帮助你
  • 对不起,我现在已经添加了代码。感谢您的帮助。

标签: php codeigniter sqlsrv


【解决方案1】:

使用这个:

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

【讨论】:

  • 虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
  • 我在 result_array() 上面添加的代码不起作用。
  • 是的,但是我发现了一些奇怪的事情......如果我将字段的长度更改为更短的字段,如 varchar(500) -> varchar(50),他可以查询结果。但是当我尝试获取所有列时,他又给了我这个错误。它与长度或许多数据有关...
  • 然后将您的数据类型更改为 text 而不是 varchar
猜你喜欢
  • 2013-08-23
  • 2015-02-06
  • 2017-07-05
  • 2015-11-14
  • 2017-10-22
  • 1970-01-01
  • 2011-12-23
  • 2012-01-09
  • 2013-08-06
相关资源
最近更新 更多