【问题标题】:explode() function using GROUP SEPARATOR使用 GROUP SEPARATOR 的 explode() 函数
【发布时间】:2013-05-10 06:35:44
【问题描述】:

根据通过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)

这不起作用。

【问题讨论】:

  • 为什么首先要使用 0x1D 作为分隔符??
  • 因为 stackoverflow.com/questions/452357/mysql-group-concat-escaping> 回答转到2nd 回答@medina

标签: php mysql explode


【解决方案1】:

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

explode("\x1D", $comment)

【讨论】:

  • stackoverflow.com/questions/452357/mysql-group-concat-escaping > 转到第二个答案
  • 复制我的评论你为什么不这样做;)
  • 不,我在发布之前没有刷新 cmets :)
  • explode 完美运行:$ php <?php print_r(explode("\x1D", "One record" . chr(0x1D) . "Two record" . chr(0x1D) . "Three record")); ?> Array ( [0] => One record [1] => Two record [2] => Three record )
  • 不起作用,因为如果字符串包含 1D 然后又出错了
【解决方案2】:

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

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

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

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

【讨论】:

  • no comment 可能包含 | 符号,因此使用 explode 获取错误值
  • 在这种情况下,只需使用“1927rfqpyfy39”作为分隔符 :) 它可以是任何字符串。无论如何,它比使用二进制字符更简单。然而,一个完全不同的问题是:你为什么要对连接 cmets 进行分组,然后再次爆炸它们。循环你的sql结果会更好吗?
  • 评论中可能是1,然后使用explode 给出错误值:)
  • 把它变成你想要的任何字符串,字符串越长。您实际遇到它的机会越少.. 但更好的是:当您需要遍历 cmets 时不要使用 group concat ...只需循环正常的 select sql 结果..
  • @DevalShah,不,1 当您的分隔符为 ^12&nbahjkYg1 时,评论中的字母不要给出错误结果
【解决方案3】:

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

explode(chr(29), $comment)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-24
    • 2017-08-05
    • 2014-06-19
    • 2020-06-15
    • 2021-08-31
    • 1970-01-01
    相关资源
    最近更新 更多