如何搜索序列化内容

Nul*_*teя 1 php mysql serialization

我有两张桌子

表1是:

id | item_id
---------------
1  | a:2:{i:0;s:1:"1";i:1;s:1:"2";}
Run Code Online (Sandbox Code Playgroud)

第二个表是:

tag_id | tag
------------
1      | c
2      | java
Run Code Online (Sandbox Code Playgroud)

我在序列化后将表2的id存储在表1中.现在我想通过mysql搜索表1中的标签,%like%但问题是,如果我想在item_id中搜索标签有id 1或2,即使我没有存储1,它也会总是找到结果但这是由serialize函数存储.现在我想知道我该怎么办?任何更好的方法/方法也将受到赞赏!

Dar*_*ter 5

序列化数据不适合搜索.

最好改进表结构:

  1. 表格标签与您的标签相同.
  2. 表items_tags结构:
    1. id - 自动增量字段
    2. item_id - 带标记的项目的ID
    3. tag_id - 标签ID

使用以下结构,使用标签搜索项目会更容易.

添加

Mayankswami,示例查询:对于具有指定标记的所有项目:SELECT item_id FROM items_tags WHERE tag_id=(TAG_ID)对于项目的标记:SELECT * FROM item_tags AS IT LEFT JOIN tags AS T ON T.id=IT.tag_id WHERE item_id=(ITEM_ID)