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

时间:2012-05-26 20:47:17

标签: php mysql arrays select tags

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

任何人都可以帮忙或者不可能吗?

谢谢大家的帮助,它有效。

5 个答案:

答案 0 :(得分:3)

有一个名为mysql的{​​{1}}函数,它以逗号分隔的字符串运行。 例如:

FIND_IN_SET

此处的文档:Mysql FIND_IN_SET

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

将字符串转换为数组:

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

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

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

使用

规范化您的数据库
tags {
  object_id
  tag_id
}

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

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

然后

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