Php 将多个列合并为一个数组或可分解字符串

Php 将多个列合并为一个数组或可分解字符串,php,mysql,Php,Mysql,我提出的声明: SELECT p.user_id AS started_by, p.position, p.created AS started_time, GROUP_CONCAT( c.id, c.user_id, c.comment, c.created) AS comments FROM pointers AS p

我提出的声明:

   SELECT p.user_id AS started_by,
          p.position,
          p.created AS started_time,
          GROUP_CONCAT(
            c.id,
            c.user_id,
            c.comment,
            c.created) AS comments
     FROM pointers AS p
     JOIN comments AS c
       ON p.id = c.pointer_id
    WHERE p.archive_id = 3
 GROUP BY p.id 
这让我明白:

发生的情况是,GROUP_CONCAT()只是将c.id连接起来。c、 用户id c.comment和c.created。我甚至不能以任何有意义的方式来分解这个值。(注意日期和id是如何作为一个字符串组合在一起的)

我不想为注释创建单独的查询。还是我应该

在任何情况下,我都需要orderby c创建注释,并有两个分隔符。例如:

comments => 1,1,text this is!,2014-12-20 17:52:02;3,1,asasd,2014-12-20 20:46:40

为列的连接定义一个分隔符,为组本身定义另一个分隔符如何

GROUP_CONCAT(concat_ws(',',
                       c.id,
                       c.user_id,
                       c.comment,
                       c.created)
            separator ';') AS comments

您可能希望以不同的方式处理此问题-
GROUP_CONCAT
允许您使用
分隔符
,但我们无法确保分隔符保持唯一(即在任何字段值中都找不到)。此外,
GROUP\u CONCAT
的最大长度为1024个字符。使用单独的注释查询可能是一个好主意。@Terry谢谢,现在就这样做:)您可以使用
SET group\u concat\u max\u len=4096增加1024字节的限制在执行之前query@Matteo是的,我知道,但4096就足够了?你永远不知道。