我有一个大问题,我无法解决的问题。在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不按顺序执行命令...为什么?
答案 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();
}