2

根据通过MySQL GROUP_CONCAT 找到的转义这个我已经使用GROUP_CONCAT

SELECT
  `topic_response`.`response`,
  GROUP_CONCAT(`comment` SEPARATOR 0x1D ) AS `comment`,
  `topic_response`.`add_date`
FROM `topic_response`
WHERE (topic_id = 286)
    AND (`comment` IS NOT NULL)
GROUP BY `response`
ORDER BY `add_date` desc

然后我的输出被正确分离,但我不知道怎么做explode()

explode("0x1D", $comment) or     explode("\0x1D", $comment)

这不起作用。

4

3 回答 3

3

如果您仍想使用 0x1D 作为分隔符,可以使用以下explode语法:

explode("\x1D", $comment)
于 2013-05-10T07:55:59.080 回答
1

你为什么使用0x1D你的分隔符?

一种更方便的解决方案是更改GROUP_CONCAT('comment' SEPARATOR 0x1D )GROUP_CONCAT('comment' SEPARATOR "|" )然后执行explode("|", $comment);

如果您期望"|"在您的“评论”中,您可以"|"用任何字符串替换。所以"asd42gfqwasdff33"也是一个有效的分隔符,它不太可能在你的评论中显示为一个角色。

但真正的问题是:你为什么要对你的评论进行分组,然后爆炸结果,而你可以循环遍历 sql 结果(将 group_concat 排除在外)。

于 2013-05-10T07:25:33.927 回答
0

我有使用chr函数。explode基本上0x1Dascii字符串29

explode(chr(29), $comment)

毫无疑问,它在所有情况下都能解决。

于 2013-05-10T08:54:03.363 回答