所以我有一个存储在数据库(序列化)中的数组,其中包含来自用户的ID。
array1 = serialize(array(1,2,3,4,5));
假设我们在数据库中有100次这样的ID和数组大小(100条记录)
array2 = serialize(array(6,2,8,1,3,10,12,60));
...
数组存储在一个数据库中,其中包含表名项和行'lookup'。
table 'items': (id,itemId,lookup)
现在我想搜索那些与一个ID匹配的序列化数组(例如ID = 2)。对于那些匹配,我想要itemId。
我可以尝试使用“喜欢%2%”的SQL查询,但这也会匹配%22%等。 我可以选择所有内容并在每个数组中进行一些foreach()循环,但这听起来非常耗时。
有什么想法,想法是怎么做到的?
答案 0 :(得分:0)
我不确定这是否有用,但您是否尝试过使用
if(in_array("yourObject",$yourArray)){
答案 1 :(得分:0)
使用like
运算符。
正如你所写,你可以使用“喜欢%2%”,但这也会选择“22”。关键是在字符串中插入分隔字符。
请考虑您的序列化字符串如下所示:
";1;2;3;4;5;"
您可以使用此column LIKE "%;2;%"
搜索 2的外观,这将不匹配22 。
不要忘记在序列化字符串的最后和开头输入分隔字符。
注意:对于长序列化字符串,此技术可能会非常慢。如果您希望表有很多行,则应考虑另一种方案。 Searching many-many关系可能更好