连接和转义字符后输出不完整[重复]

问题描述 投票:2回答:1

这个问题在这里已有答案:

我有一个字符串,在MySQL上完成了连接值,如下所示:

CONCAT("[\"",GROUP_CONCAT(DISTINCT(concat_ws("=>",val_1, val_2,val_3)) ORDER BY val_4 DESC SEPARATOR "\",\""),"\"]")

我注意到每行的输出似乎都不完整,从var_dump看起来像是这样:

"["CONFECTIONERY=>BISCUITS=>CRACKERS",
  "CONFECTIONERY=>BISCUITS=>COOKIES",
  "ORIENTAL GROCERY=>KOREAN GROCERY=>KOREAN FOOD (DRY, PACKET)",
  "BEVERAGE=>COFFEE=>PREMIX COFFEE POWDER",
  "CLEANING AGENT & PEST CONTROL=>LAUNDRY=>LAUNDRY LIQUID",
  "CLEANING AGENT & PEST CONTROL=>LAUNDRY=>LAUNDRY POWDER",
  "BEVERAGE=>TEA=>WESTERN TEA",
  "CEREAL & SPREADS=>CEREAL=>"

它缺少结束方括号,也缺少=>字符后的第三个元素。并且其他线也在同一位置中断。如果我在PHP中尝试使用json_decode这个输出我可能因为没有很好的编码而得到NULL,因为最长的行(超过345个字符)被剪切掉了。

或者可能是与字符串长度有关的问题?因为我注意到它们很长并且它们在与角色相同的位置中断。请参阅下面mysqlworkbench输出的截图:enter image description here

我也计算过,每一行都有345个字符,它在同一点断开。这似乎并非巧合:

enter image description here

从我所看到的,我应该正确地逃脱角色。有什么建议?

php mysql escaping concat group-concat
1个回答
0
投票

它没有转义或php代码的问题,它是一个mysql服务器限制添加到分组机制函数,对于这个例子group_concat。

有关更多信息,请阅读手册:https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_group_concat_max_len

您可以为此查询或全局更改此sys_option,但在db端对这么多数据进行分组是一个坏主意。

© www.soinside.com 2019 - 2024. All rights reserved.