根据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)
这不起作用。
答案 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
函数。基本上0x1D
是ascii
字符串29
explode(chr(29), $comment)
毫无疑问,它在任何情况下都能解决。