1

我有一个标签系统,其中标签作为内爆数组存储在一行中,如下所示:“value1,value2,value3,等等......”
我正在尝试制作一个标签搜索页面,但我不知道如何将其转换为数组以查看某人搜索的特定标签是否在数组中(因为我在使用 SELECT 时无法将其分解)。

任何人都可以帮助还是不可能?

谢谢大家的帮助,成功了。

4

5 回答 5

3

有一个mysql函数调用FIND_IN_SET它对逗号分隔的字符串进行操作。例如:

SELECT * FROM posts WHERE FIND_IN_SET('some_tag', post_tags)>0

此处的文档:Mysql FIND_IN_SET

于 2012-05-26T20:57:01.400 回答
1

我认为更好的方法是规范化数据并将标签移动到单独的表中,然后将标签连接到您的实体。搜索会快速简单 =)

于 2012-05-26T21:30:36.717 回答
0

从您的数据库中读取 $tags_str。

将字符串转换为数组:

   <?php
    $tags_str = "value1, value2, value3";
    $tags_arr = explode(', ', $tags_str);
    ?>

然后使用in_array() PHP 函数来搜索数学。

于 2012-05-26T20:51:40.083 回答
0

您可以在选择查询中使用“LIKE”

SELECT row FROM table WHERE tag LIKE '%search_value%'
于 2012-05-26T20:52:31.853 回答
0

规范化你的数据库

tags {
  object_id
  tag_id
}

或者,如果你很懒,那就做

UPDATE tags = CONCAT(",", tags, ",") FROM table

接着

SELECT * FROM table WHERE tags LIKE '%,selected_tag,%'
于 2012-05-26T21:39:47.617 回答