在mysql中为逗号添加不需要的字符 - codeigniter

时间:2015-04-21 07:15:33

标签: php mysql codeigniter

这是从mysql

获取数据的codeigniter控制器语句
$result = $this->db->select("GROUP_CONCAT(Service_name SEPARATOR ', ' ) AS service_names")
                           ->where('Service_boid', $boId)
                           ->get('service');

这里的问题是,mysql中的语法错误,因为虽然回显了查询:

SELECT GROUP_CONCAT(Service_name SEPARATOR ', `'` ) AS service_names FROM (`service_info`) WHERE `Service_boid` = '4'
  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   靠近') AS service_names FROM ( service_info ) WHERE Service_boid`   第1行='4'

如上所示,不需要的字符会附加到分隔符。除了直接查询执行(sql查询是通过mysqli_query()执行)解决这个问题的任何解决方案?

注意:我想要','作为分隔符。

3 个答案:

答案 0 :(得分:2)

从代码中删除空格:

"GROUP_CONCAT(Service_name SEPARATOR ', ' ) AS service_names")
                                       ^

像这样使用:

"GROUP_CONCAT(Service_name SEPARATOR ',' ) AS service_names")
  

如果您想使用','作为分隔符

然后使用false作为第二个参数。

$this->db->select("GROUP_CONCAT(Service_name SEPARATOR ', ' ) AS service_names", false) 
  

$this->db->select()接受可选的第二个参数。如果你设置   它为FALSE,CodeIgniter不会试图保护你的领域或表   带反叛的名字。如果您需要复合选择,这非常有用   言。

答案 1 :(得分:1)

试试这个:

$result = $this->db->select("GROUP_CONCAT(Service_name SEPARATOR ', ' ) AS service_names", false)
->where('Service_boid', $boId)
->get('service');

请注意,向select()添加第二个参数不会尝试转义select语句,而逗号(',')是默认分隔符。

答案 2 :(得分:1)

为避免CI保护您的字段查询,您需要使用false作为select函数的第二个参数。请参阅文档$this->db->select();

所以你的查询将是这样的

$result = $this->db->select("GROUP_CONCAT(Service_name SEPARATOR ', ' ) AS service_names",false)
->where('Service_boid', $boId)
->get('service');