Php 如何在序列化内容中搜索

Php 如何在序列化内容中搜索,php,mysql,serialization,Php,Mysql,Serialization,我有两张桌子 表1是: id | item_id --------------- 1 | a:2:{i:0;s:1:"1";i:1;s:1:"2";} 第二个表是: tag_id | tag ------------ 1 | c 2 | java 序列化后,我将表2的id存储在表1中。现在我想用mysql%像%搜索表1中的标记,但问题是,如果我想搜索项_id中id为1或2的标记,它将始终找到结果,即使我没有存储1,但这是由serialize函数存储的。现在我想知道我该怎

我有两张桌子

表1是:

id | item_id
---------------
1  | a:2:{i:0;s:1:"1";i:1;s:1:"2";}
第二个表是:

tag_id | tag
------------
1      | c
2      | java

序列化后,我将表2的id存储在表1中。现在我想用mysql%像%搜索表1中的标记,但问题是,如果我想搜索项_id中id为1或2的标记,它将始终找到结果,即使我没有存储1,但这是由serialize函数存储的。现在我想知道我该怎么做?任何更好的方法/方法也将不胜感激

序列化数据不适合搜索

最好改进您的表结构:

表标签与您的相同。 表项\u带结构的标签: id-自动增量字段 item_id-带标签的项目id 标签id-标签id 使用以下结构,使用标记搜索项目更容易

增加


Mayankswami,示例查询:对于具有指定标记的所有项目:从项目标记中选择项目id,其中标记id=标记id用于项目的标记:从项目标记中选择*作为T.id=IT.tag\U id,其中项目id=项目id

序列化数据不适合搜索

最好改进您的表结构:

表标签与您的相同。 表项\u带结构的标签: id-自动增量字段 item_id-带标签的项目id 标签id-标签id 使用以下结构,使用标记搜索项目更容易

增加


Mayankswami,示例查询:对于具有指定标记的所有项目:从项目标记中选择项目id,其中标记id=标记id用于项目的标记:从项目标记中选择*作为T.id=IT.tag\U id,其中项目id=项目id

,以便进行规范化,改变你的桌子structure@diEcho谢谢,但是这个错误只是在so上我已经改正了我不是在说so格式。我说的是MySQL表的结构:@diEcho ya先生,我是一个新的标准化者,你能告诉我怎么做这个黄金法则吗:永远不要在任何列中存储多个逗号分隔的值。为了标准化,请更改表的`structure@diEcho谢谢,但是这个错误只是在so上我已经改正了我不是在说so格式。我说的是MySQL表的结构:@diEcho ya先生,我是新的标准化,你能告诉我怎么做这个黄金法则吗:永远不要在任何列中存储多个逗号分隔的值,先生,我确实知道桌子的结构,现在我做到了correct@diEcho我想搜索物品id中存在的标记,但正如暗黑精灵告诉我的,我想搜索它,并给出相同的标记result@Mayankswami,示例查询:对于具有指定标记的所有项目:从项目标记中选择项目id,其中标记id=标记id用于项目标记:从项目标记中选择*作为T ON T.id=IT.tag_id,其中项目id=项目id如果您不能做任何其他事情,并且必须仅使用序列化数据,则可以在查询中使用REGEXP命令!是的,先生,我确实知道桌子的结构现在我做了correct@diEcho我想搜索物品id中存在的标记,但正如暗黑精灵告诉我的,我想搜索它,并给出相同的标记result@Mayankswami,示例查询:对于具有指定标记的所有项目:从项目标记中选择项目id,其中标记id=标记id用于项目标记:从项目标记中选择*作为T ON T.id=IT.tag_id,其中项目id=项目id如果您不能做任何其他事情,并且必须仅使用序列化数据,则可以在查询中使用REGEXP命令!