如何使用PHP在MySQL数据库中存储的数组中搜索ID

时间:2013-03-06 12:38:12

标签: php mysql arrays

所以我有一个存储在数据库(序列化)中的数组,其中包含来自用户的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()循环,但这听起来非常耗时。

有什么想法,想法是怎么做到的?

2 个答案:

答案 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关系可能更好