[英]Adding unwanted character to comma in 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` ='4'在第1行
如上所示,不需要的字符将附加到分隔符。 除了直接查询执行(sql查询是通过mysqli_query()执行)解决这个问题的任何解决方案?
注意:我想要','作为分隔符。
从代码中删除空格:
"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将不会尝试使用反引号来保护您的字段或表名称。 如果您需要复合选择语句,这非常有用。
试试这个:
$result = $this->db->select("GROUP_CONCAT(Service_name SEPARATOR ', ' ) AS service_names", false)
->where('Service_boid', $boId)
->get('service');
请注意,向select()
添加第二个参数不会尝试转义select语句,逗号(',')是默认分隔符。
要避免通过CI保护字段查询,您需要使用false
作为select
函数的第二个参数。 请参阅doc $ this-> db-> select();
所以你的查询将是这样的
$result = $this->db->select("GROUP_CONCAT(Service_name SEPARATOR ', ' ) AS service_names",false)
->where('Service_boid', $boId)
->get('service');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.