我遇到了使用sqlsrv驱动程序的Codeigniter Active Record Class问题。当我在select子句上使用特定的连接条件或函数时,Codeigniter会使用双引号导致SQL SERVER 2012出错。例如:
$this->db->select('data,tab,tma');
$this->db->from('abHistorico as ab');
$this->db->join('tmap','ab.id_fila = tmap.id_fila AND ab.data BETWEEN data_inicial AND data_final','LEFT');
$this->db->where('data BETWEEN "$date_star" AND "$date_end"');
在这些情况下,SQL SERVER会抛出以下错误:
在'BETWEEN'附近发生sintax SELECT“data”,“tab”,“tma”FROM“abHistorico”as“ab”LEFT JOIN“tmap”ON“ab”。“id_fila”=“tmap”。“id_fila”AND“ab”。“data”“ BETWEEN“”data_inicial“AND data_final WHERE数据BETWEEN”$ date_star“和”$ date_end“
正如你所看到的,BETWEEN有双引号。我可以使用第三个假参数,但从Active Record中输入每个方法都很烦人。另一个例子是在select子句中使用一个函数,比如CONVERT(varchar(10),data,103)或类似的东西。
我担心禁用逃生,但对我而言,事情正常运作是必要的。 我正在使用:PHP 5.5,SQL SERVER 2012
答案 0 :(得分:-1)
如果你不想要双引号那么
try like this
$this->db->select('data,tab,tma');
$this->db->from('abHistorico as ab');
$this->db->join('tmap','ab.id_fila = tmap.id_fila AND ab.data BETWEEN data_inicial AND data_final','LEFT');
$this->db->where('data BETWEEN '.$date_star.' AND '.$date_end.');