codeigniter在查询中添加错误的额外报价

codeigniter在查询中添加错误的额外报价,codeigniter,Codeigniter,请帮我解决这个问题 我将在mysql中执行查询,但code igniter以错误的格式读取了我的查询: 我的查询: $this->db->select('substring(sbj_prog,1,5) as prog , count(sbj_prog) as bil'); $this->db->from('sbj_app'); $this->db->group_by('prog'); $this->db->limit('10'); 这就是code

请帮我解决这个问题

我将在mysql中执行查询,但code igniter以错误的格式读取了我的查询:

我的查询:

$this->db->select('substring(sbj_prog,1,5) as prog , count(sbj_prog) as bil');
$this->db->from('sbj_app');
$this->db->group_by('prog');
$this->db->limit('10');
这就是codeigniter的阅读方式

 SELECT substring(sbj_prog, `1`, `5)` as prog, count(sbj_prog) as bil FROM (`sbj_app`) GROUP BY `prog` LIMIT 10
问题是为什么要在
5)


非常感谢。

您可以像这样尝试额外的参数false

$this->db->select("substring(sbj_prog,1,5) as prog , count(sbj_prog) as bil", FALSE);

在得到如下结果后,尝试添加子字符串将起作用

$this->db->select('sbj_prog as prog , count(sbj_prog) as bil');
$this->db->from('sbj_app');
$this->db->group_by('prog');
$this->db->limit('10');
然后,在获得结果后,尝试使用子字符串作为

$prog = substring($row['prog'],1,5);
你可以用

$this->db->select('substring(sbj_prog,1,5) as prog,count(sbj_prog) as bil',FALSE);
请参阅本手册中的

$this->db->select()接受可选的第二个参数。若您将其设置为FALSE,CodeIgniter将不会尝试用反勾号保护您的字段或表名。如果需要复合select语句,这将非常有用

换句话说,如果你的案例中只有常量,你可以使用

$this->db->select('substring(sbj_prog,1,5) as prog , count(sbj_prog) as bil',
                  FALSE);