使用GROUP SEPARATOR的explode()函数

时间:2013-05-10 06:35:45

标签: php mysql explode

根据MySQL GROUP_CONCAT escaping查找,我使用了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)

这不起作用。

3 个答案:

答案 0 :(得分:2)

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

explode("\x1D", $comment)

答案 1 :(得分:1)

为什么使用0x1D作为分隔符?

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

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

但真正的问题是:为什么你要对你的评论进行分组,然后在你可以循环搜索sql结果的同时将结果展开(让group_concat退出)。

答案 2 :(得分:0)

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

explode(chr(29), $comment)

毫无疑问,它在任何情况下都能解决。

相关问题