【发布时间】:2013-03-06 12:38:11
【问题描述】:
所以我在数据库中存储了一个数组(序列化),其中包含来自用户的 ID。
array1 = serialize(array(1,2,3,4,5));
假设我们在数据库中有 100 次不同的 ID 和数组大小(所以 100 条记录)
array2 = serialize(array(6,2,8,1,3,10,12,60));
...
数组存储在数据库中,其中包含表名项目和“查找”行。
table 'items': (id,itemId,lookup)
现在我想搜索那些匹配一个 ID(例如 ID=2)的序列化数组。对于那些匹配的,我想要 itemId。
我可以尝试使用“like %2%”的 SQL 查询,但这也将匹配 %22% 等。 我可以选择所有内容并在每个数组中执行一些 foreach() 循环,但这听起来非常耗时。
任何想法,想法如何做到这一点?
【问题讨论】:
-
你能解释一下它以哪种格式存储在数据库中吗?
-
没关系,哪种格式最适合解决方案。
-
你可以试试mysql的FIND_IN_SET方法
-
不要这样做。改为规范化您的数据库。
-
@Jack 规范化数据库到底是什么意思(在这种情况下)?可以举个例子吗?