Codeigniter选择带有绑定的查询

时间:2012-05-18 12:12:35

标签: codeigniter binding

我有一个大问题,我无法解决的问题。在codeigniter中,我创建了一个模型,完成了这个:

public function listazas($mettol, $mennyit, $feltetel)
    {
        $query = "SELECT * FROM vicc ORDER BY ? DESC LIMIT ?,?";
        $query = $this->db->query($query, array($feltetel, $mettol, $mennyit));

        return $query->result_array();
    }

在控制器中我使用它:

   $viccek = $this->index_model->listazas(0, 10, "ertekeles");

   $this->load->view('index/index', array(
       'viccek' => $viccek
   ));

这里的sql不按顺序执行命令...为什么?

3 个答案:

答案 0 :(得分:3)

好吧,因为你正在做ORDER BY 'column'而不是ORDER BY column

您必须使用以下命令替换当前函数:

public function listazas($mettol, $mennyit, $feltetel)
{
    $feltetel = $this->db->escape_like_str($feltetel);
    $query = "SELECT * FROM vicc ORDER BY {$feltetel} DESC LIMIT ?,?";
    $query = $this->db->query($query, array($mettol, $mennyit));

    return $query->result_array();
}

基本上,您的query()转发$feltetel''围绕它,使其像字符串而不是列名。

对于像此一样简单的查询,您可以通过Active Records轻松完成。

您也可以尝试在echo $this->db->last_query();之后运行$this->db->query()并自行对其进行排查。比较结果。
然后你会注意到''后的ORDER BY

答案 1 :(得分:1)

buildConfigField "int", "DATABASE_VERSION", "2"  // remember to update repo/docs/sqlite-versions.md

答案 2 :(得分:0)

它如此简单看一下这个例子只是控制器中的模型,只需要用这些参数调用方法就可以问我更详细的解决方案

public function read_all($limit,$start){
    $this->db->select('*');        
    $this->db->from('postes');
    $this->db->order_by('id', 'ASC');
    $this->db->limit($limit, $start);    
    $q = $this->db->get();
    return $q->result_array();
}