2012-05-18 50 views
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不要被部分執行命令......爲什麼呢?

回答

1

那是因爲你在做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(); 
} 

Basicly您query()與周圍''逃過$feltetel,使得它像一個字符串而不是列名。

對於像這樣簡單的查詢,您可以通過Active Records輕鬆完成。

您也可以嘗試通過在$this->db->query()之後運行echo $this->db->last_query();來自行排除此故障,並比較結果。
然後你會注意到ORDER BY''

+0

如何我可以解決它嗎? – tthlaszlo

+0

用上面給出的替換你的函數。 –

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(); 
} 
1
$sql = "insert into tbl_user (name, age, groupname) 
     values (?, ?, ?)"; 
$this-> db-> query($sql,array('codeigniter, 35, 'Group 1'));