php - 获取 GROUP_CONCAT 值作为单独的值

标签 php sql mysql

我正在尝试实现一个简单的标记系统(在 php 中乱搞)...

我使用以下 sql 命令来获取所需的线程、它的作者和与之关联的标签:

$thread = select_Query("SELECT thread.title, thread.id as t_id,
                         thread.content, author.username, author.id as a_id,
                         GROUP_CONCAT(DISTINCT tags.name ORDER BY tags.name DESC SEPARATOR ',') AS tags
                         FROM thread JOIN thread_tags ON thread.id = thread_tags.thread_id
                         JOIN tags ON thread_tags.tag_id = tags.id
                         INNER JOIN author on author.id = thread.author_id
                         WHERE thread.id = $id", $link);

如您所见,我正在使用 GROUP_CONCAT。这工作正常,但是当我这样做时,标签都出现在一个变量中,我知道我可以使用 $pieces = explode(",", $thread['tags]); 但是还有另一种方法吗?我问这个是因为标签很容易分开,但是如果它是更复杂的东西(例如包含定界符 , 的东西)。

我的数据库架构如下:

thread: id, content, title, author_id

thread_tags: id, tag_id, thread_id

tags: id, name

最佳答案

您可以将 GROUP_CONCAT 使用的分隔符更改为不会出现在标记中的内容,例如“|”性格。

GROUP_CONCAT(DISTINCT tags.name ORDER BY tags.name DESC SEPARATOR '|')

您还可以验证标记字段并确保它不包含分隔符。

关于php - 获取 GROUP_CONCAT 值作为单独的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4631100/

相关文章:

mysql - array_search 结果未正确获取

javascript - PHP数据在AJAX中成功吗?

php - 发电机 : query global secondary index on non-key attributes

PHP:如何获取所有正则表达式匹配项?

sql - SQL Server中非聚集索引的使用

sql - SQL Server 2012 中的编号岛

mysql - 使用mysql查询删除价格较低的重复产品

php - 关于如何在 linux 中与另一个 shell 交互使用 shell 的一些问题

sql - 如何使用 Diesel 计算数组列中不同元素的数量?

php - Symfony 3 从现在开始找到最近的日期