Codeigniter 3 Active Record双引号

时间:2014-12-01 03:07:21

标签: php sql-server codeigniter

我遇到了使用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

1 个答案:

答案 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.');