2011-01-20 70 views
0

我知道PHP序列化如何工作。但是我想知道當存儲在數據庫中時應該序列化什麼類型的數據/結構。數據庫數據應該被序列化嗎?

我建立一種在PHP中的地址簿系統具有這樣的領域:

名稱,名字,街道,城市,郵編等

我可以序列我的數據,將其存儲在我的數據庫或爲每個項目存儲不同的字段。

任何提示,建議,想法?

+2

0 upvotes,too。 – webbiedave 2011-01-20 17:18:23

回答

4

如果正確地明白,你的猶豫不決是是否將對象序列或包含所有字段的陣列,並且將結果存儲在數據庫中,或者是否單獨地存儲在一個表列中的每個字段。

在沒有特殊情況下,我建議你做後者。它將允許您在數據庫中更有效地搜索,排序,交叉引用等。發送數據或爲了保存腳本狀態的一部分,而不是這麼多的數據存儲在數據庫中保存複雜的對象圖時

序列化是比較常見的。

2

對於一致的數據,將字段存儲在自己的列中。這樣你可以搜索/訂購/等。通過這些領域。數據庫存儲很少需要序列化。通常在需要將數據/對象存儲在文本文件或其他需要字符串表單的地方時使用。

1

一個例子:如果您正在使用捲翹作爲中繼代理,並希望通過對POST數組變量,你需要使用PHP序列化(或同等學歷),因爲捲曲cannot post array variables

0

如果你需要這些領域的一個搜索(名稱,名字,街道,城市,郵編,...),那麼你應該爲每個字段做出不同的列。但我不知道爲什麼要序列化數據只是爲了插入數據庫。 HDD上佔用的空間在兩種情況下都幾乎相同。

2

我會去的數據庫,我將存儲姓名,名字,街道等在數據庫表中單獨的列。沒有必要在這種情況下使用序列...

這裏是將從中受益系列化情況......

試想,你用一些很酷的產品創建網上商店。這些產品具有的屬性,如顏色...「產品在這些顏色可以......」
你不知道有多少顏色將如何網上商店對這些產品的管理員店...

所以,現在,系列化來在數據庫表下單「色 - (>字符串)...
管理員可以當他是進口產品進入DB需要添加儘可能多的顏色...您的腳本只會序列化$ colors數組轉換爲字符串,然後存儲陣列連載'列...
當從數據庫中檢索數據時,只需將該序列化字符串反序列化...

我希望我已經向你解釋了我的想法,方式:)