繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM