0

请帮我解决这个问题..

我将在 mysql 中进行查询,但代码点火器以错误的格式读取了我的查询:

我的查询:

$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)

非常感谢。

4

3 回答 3

0

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

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

它会起作用的

于 2013-05-17T04:35:37.377 回答
0

得到结果后尝试添加子字符串

$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);

参考这个选择

于 2013-05-17T04:35:56.083 回答
0

来自CodeIgniter 的 activerecord手册;

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

换句话说,如果您只有常量,则可以使用;

$this->db->select('substring(sbj_prog,1,5) as prog , count(sbj_prog) as bil',
                  FALSE);
于 2013-05-17T04:36:16.673 回答