1

我有一个大问题,我无法解决。在 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不按部分进行排序......为什么?

4

3 回答 3

4

嗯,这是因为你正在做 aORDER 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();在 the 之后运行$this->db->query()并比较结果来自行解决此问题。
然后你会注意到''after ORDER BY

于 2012-05-18T12:36:04.177 回答
1
$sql = "INSERT INTO tbl_user (name, age, groupname)
        VALUES (?, ?, ?)";
$this-> db-> query($sql,array('codeigniter', 35, 'Group 1'));
于 2017-11-02T12:04:20.390 回答
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();
}
于 2016-09-08T09:48:24.770 回答