这是从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()执行)解决这个问题的任何解决方案?
注意:我想要','作为分隔符。
答案 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');