2012-06-13 76 views
0

IP.Nexus將自定義字段放入表中,所有表格都混淆成一行,並且一些如何將正確的數據提取出來。如何從具有多個值的字段中提取數據?

基本上是我的自定義字段行看起來像這樣:

a:2:{i:2;s:4:"Test";i:3;s:10:"Accounting";} 

如何選擇拉什麼項目,我想出去把只有一個項目不是整個行,是帶分隔符或字符串分路器,因爲我是mySQL的這個部分的新手

因爲我想回聲只是自己的廣告,反之亦然測試。

在此先感謝

+0

另外我想把它放到一個變量中,並回顯出那個變量。 –

回答

1

這是一個使用serialize()函數的序列化數組,因此您可以使用unserialize($YourString);來獲取其內容。

但我看到你的字符串被破壞的反序列化,因爲s:4:s:4:"advertising"說,經過s:4: 4個字符長的字符串預計advertising不是。

+0

對不起,他們圍繞廣告應該在哪裏測試,反之亦然。 –

+0

@KyleHolmes在這種情況下'反序列化'解決了你的問題。 – Leri

+0

好吧,我會閱讀關於反序列化。 –

-1

因爲這看起來JSON,您可以使用PHP JSon模塊從MySQL解析每一行。

<?php 

(...) 
while (...) { 
    $obj = json_decode($row); 
    // do something with $obj 
} 
+0

你能解釋一下我以前沒見過嗎,對不起。 –

+0

哼?!你沒有看到什麼?這是一些僞代碼,「(...)」意味着在那裏恢復了某些東西。 –

+0

@sputnick這不是json。 – Leri

0

在數據庫中的數據是在序列化(JSON)form.You可以把它變成使用unserialize簡單陣列。 例如,如果$mystr是你的字符串 寫

$mystring=unserialize($mystring) 

你會得到這個字符串 的正常排列你可以做

foreach($mystring as $str){ 
$ads[]=$str['advertising']; 
} 

,所得陣列$ads將是你在簡單的喜歡廣告數組形式

+0

可以這麼說 $ string1 = $ row [「ads_fields」]; $ mystring = unserialize($ string1) 然後將反序列化來自該字段的內容。但然後我可以輸出一個選擇的反序列化內容到一個變量。 –

相關問題