2009-11-10 31 views
1

获得序列化数据的最大价值的方法是什么?例如,我有这个在我的专栏'评级':使用php将序列化数据的最大价值转化为mysql列

a:3:{s:12:"total_rating";i:18;s:6:"rating";i:3;s:13:"total_ratings";i:6;} 

我如何选择3最大'评级'的查询?

非常感谢

+0

此数据的格式是什么?我从来没有见过它。 – Kai 2009-11-10 18:24:18

+1

看起来像一个序列化的PHP对象 – dnagirl 2009-11-10 18:27:29

回答

4

你可能看着一堆SUBSTRING_INDEX(field,':',@offset)电话,如果你想这样做的SQL。这将是非常 grisly。在数据库中存储对象的序列化版本是持久性的一种方便,但不应将其视为永久性存储方法。如果你坚持使用序列化字符串进行查询,那么你就失去了关系数据库的所有功能,并且你还可能将字符串存储在文本文件中。

最好的选择是使用序列化的字符串仅用于持久性目的(如记住用户上次访问的内容),并将计算所需的数据存储在正确标准化的字段和表中。然后,您可以轻松查询您需要知道的内容。

另一种选择是从字段满足某些其他条件(例如date_added字段在上周内)的行中选择所有'rating'字符串,重新实例化应用程序层中的所有对象并在那里比较它们。

+0

谢谢dnagirl 我会想到将数据分隔成列的选项。 – returnvoid 2009-11-10 18:40:09