PHP:从MySQL中的内爆数组中选择一个值

PHP:从MySQL中的内爆数组中选择一个值,php,mysql,arrays,select,tags,Php,Mysql,Arrays,Select,Tags,我有一个标记系统,其中标记作为内爆数组存储在一行中,如下所示: “值1、值2、值3等…” 我正在尝试创建一个标签搜索页面,但我不知道如何将其转换为数组,以查看有人搜索的特定标签是否在数组中(因为我无法在使用SELECT时分解它) 有人能帮忙吗?还是不可能 谢谢你们的帮助,它成功了 从数据库中读取$tags\u str 将字符串转换为数组: <?php $tags_str = "value1, value2, value3"; $tags_arr = explode('

我有一个标记系统,其中标记作为内爆数组存储在一行中,如下所示: “值1、值2、值3等…” 我正在尝试创建一个标签搜索页面,但我不知道如何将其转换为数组,以查看有人搜索的特定标签是否在数组中(因为我无法在使用SELECT时分解它)

有人能帮忙吗?还是不可能


谢谢你们的帮助,它成功了

从数据库中读取$tags\u str

将字符串转换为数组:

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


然后使用PHP函数搜索数学。

从数据库中读取$tags\u str

将字符串转换为数组:

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

然后使用PHP函数搜索数学。

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

SELECT row FROM table WHERE tag LIKE '%search_value%'
您可以在select查询中使用“LIKE”

SELECT row FROM table WHERE tag LIKE '%search_value%'

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

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

这里的文档:

有一个名为
FIND\u IN\u SET
mysql
函数,它对逗号分隔的字符串进行操作。 例如:

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

这里的文档:

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

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

使用

tags {
  object_id
  tag_id
}
或者,如果你懒惰,就去做吧

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

SELECT * FROM table WHERE tags LIKE '%,selected_tag,%'

使用

tags {
  object_id
  tag_id
}
或者,如果你懒惰,就去做吧

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

SELECT * FROM table WHERE tags LIKE '%,selected_tag,%'

如果你有例如“猫粮”、“猫粮超级粉丝”这样的标签,这将失败。如果你有例如“猫粮”、“猫粮超级粉丝”这样的标签,这将失败。不要忘记接受任何有帮助的答案。不要忘记接受任何有帮助的答案。