2009-11-10 35 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