从mysql中提取序列化数据

时间:2012-01-26 01:03:35

标签: php mysql serialization

因此,db中存在一个字段,用于存储序列化数组。

$array = array('count1' => 10, 'count2' => 20, 'count3' => 4);

序列:

a:3:{s:6:"count1";i:10;s:6:"count2";i:20;s:6:"count3";i:4;}

是否可以使用mysql查询来拉取count1 + count2 + count3?我想我正在寻找类似于php爆炸的东西。很确定这不可能做到,但我想我会问。

我需要拉出最高count1 + count2 + count3行并返回总计数。循环遍历每一行并且反序列化将不起作用,因为存在大量的行。

1 个答案:

答案 0 :(得分:2)

如果您需要通过SQL访问部分序列化数据,则需要将它们存储在不同的列中。

虽然可以使用正则表达式等技术来访问此字符串中的这三个值,但是当在WHERE标准中使用时,它会非常慢,因为索引将是无用的 - 更不用说它将是一个巨大的混乱,比在编程语言中使用goto更糟糕。

因此解决方案是创建一个新列,然后遍历所有行,对它们进行反序列化,并将总和存储到新列中。这可能需要一段时间,但你只需要一次。

根据您的应用程序,最好分别创建三列并存储每个值。