我有这样的查询:
SELECT RIGHT(id, 1) id_root
FROM user
WHERE LENGTH(id) = 3
and LEFT(id, 1) = '0'
以及如何将该查询转换为codeigniter
中的有效记录。
我的问题是语法RIGHT( id, 1 )
以及LEFT(id,1)='0'
答案 0 :(得分:3)
$result_arr = $this->db
->select("RIGHT(id, 1) id_root", FALSE)
->from("user")
->where(
array("LENGTH(id)"=> 3, "LEFT(id, 1) =" => 0)
)->get()
->result_array();
或者您只需使用$this->db->query("You SQL");
$query = "SELECT RIGHT(id, 1) id_root
FROM user
WHERE LENGTH(id) = ?
and LEFT(id, 1) = ? ";
$result_arr = $this->db->query($query, array(3, 0))->result_array();
答案 1 :(得分:1)
saredpreference
答案 2 :(得分:1)
您可以像这样生成您的查询
$this->db->from('user');
$this->db->select('RIGHT(id, 1) id_root',false);
$this->db->where('LENGTH(id)',3,true);
$this->db->where('LEFT(id, 1) =','0',true);
$results=$this->db->get()->result();
请记住,如果你想在你的select查询中使用mysql函数,这可能会通过codeigniter破坏mysql语法,使用false作为第二个参数,这样codeigniter就不会保护/隐藏你的字段。
相同的地方,如果你想使用mysql函数或其他可能会破坏mysql语法的函数,使用第三个参数为true,这样codeigniter就不会转换你的字段。
详情请见documentation
使用$this->db->query('YOUR_QUERY')
获取任何查询结果的最简单方法但我更喜欢使用CI Active记录的函数。