2013-10-25 52 views
0

我與API調用之一的易趣交易API和部分工作改回來了XML元素的ItemSpecifics陣列應對,一個簡單的例子如下:PHP/MySQL與XML數組,其屬性每

<ItemSpecifics> 
<NameValueList> 
    <Name>Brand</Name> 
    <Value>My1stWish</Value> 
    <Source>ItemSpecific</Source> 
</NameValueList> 
</ItemSpecifics> 

所以我們有屬性名稱被返回。

並不是每一個項目回來與同一組的名稱屬性,一些易趣物品可能有沒有,有一些可能有20和20的那些從下面的清單完全不同,與有15分不同的。

所以我的問題是: 建議你將如何處理這些屬性值,從而使它們可以被存儲到一個MySQL數據庫表,然後可以從該表中拉回,與具有價值已設置正確的名稱作爲標題和相應的

我是否應該將這些作爲序列化數據轉儲到名爲'ItemSpecifics'列的表中?但後來我不確定我如何讓它們再次退出,這樣我就可以創建一個帶有所有選項的平面文件,例如CSV文件中的標題。

下面兩個例子:

清單1倍的回報:

<ItemSpecifics> 
<NameValueList> 
    <Name>Brand</Name> 
    <Value>My1stWish</Value> 
    <Source>ItemSpecific</Source> 
</NameValueList> 
<NameValueList> 
    <Name>Exact Colour</Name> 
    <Value>Black</Value> 
    <Source>ItemSpecific</Source> 
</NameValueList> 
</ItemSpecifics> 

清單2個回報:

<ItemSpecifics> 
<NameValueList> 
    <Name>Exact Heel Height</Name> 
    <Value>4.1"</Value> 
    <Source>ItemSpecific</Source> 
</NameValueList> 
<NameValueList> 
    <Name>Heel Type</Name> 
    <Value>Stiletto</Value> 
    <Source>ItemSpecific</Source> 
</NameValueList> 
</ItemSpecifics> 
+0

使用simplexml庫,將xml轉換爲數組,然後將其放入數據庫中,但是您感覺最好。轉換爲json,序列化它,創建自定義列,天空是極限。 – skrilled

+0

Hi Skrilled,這是真的,但它跟蹤每個Name屬性,以便當它們從數據庫中拉出時,可以獲得每行的所有選項。 –

+0

序列化和反序列化,或者json_encode和json_decode。您可以將數據以多種格式存儲在TEXT列中。你可以像下面說的那樣創建基於關係的表。真的沒有「這是做到這一點」的答案。有很多NoSQL數據庫可以存儲json。 – skrilled

回答

0

有一對夫婦的方式做到這一點,我能想到的。首先,如你所說,有序列化。這就是將數據轉儲到數組中的地方,通過serialize運行它並將其與其他數據放在同一行中。

然而,第二種方法可能會更好。也就是說,你製作一個與你的物品有關係的表格。假設您有一張名爲items的表格。在其中,您創建一個名爲item_id的自動ID(自動遞增)字段。所以你把你的物品數據拿出來放進這個表格。我們會說它獲得了20的ID。現在,您有第二個表item_options。在這個表格中,你可以逐行存儲你的選項。你也可以輸入父行的ID。假設你有五套選擇。您將擁有五行,每行的item_id爲20.這裏的優勢是您的數據現在已完全展開,因此您可以查詢您的選項表以查找所有提供紅色的產品。這是RDBMS的「關係數據庫」部分。