2014-07-23 50 views
1

我的SQL返回數據反序列化它

$query = "SELECT value FROM oc_setting WHERE setting_id =7258"; 
     $result = $this->db->query($query); 
     return $result->rows; 

當我var_dump它表明

array(1) { 
    [0]=> 
    array(1) { 
    ["value"]=> 
    string(158) "a:1:{i:0;a:5:{s:8:"rss_link";s:11:"ddddddddddd";s:9:"layout_id";s:1:"2";s:8:"position";s:14:"content_bottom";s:6:"status";s:1:"1";s:10:"sort_order";s:1:"5";}}" 
    } 
} 

我怎麼能反序列化數組這樣嗎?先轉換成字符串?我試過unserializ(var),但它說錯誤因爲它是一個數組。

+0

您有一個數組,因爲你取行。如果你只讀取一行,那麼你的'$ data-> value'將直接包含你想要反序列化的字符串。 (如果您有多行,請在每行的循環中執行。) –

+0

http://php.net/manual/en/function.unserialize.php請使用本手冊。 – TBI

回答

0

看來你正在使用一些PHP框架(非常類似於CodeIgniter的一個,但不確定)。 應該有一個函數來從結果集中檢索一個(第一)行。

現在你問的是一個不好的解決方法。通常數據庫驅動程序有一個很好的界面,可以從查詢/查看中獲取多少行/列。

我通常使用下面的語句,如果我需要辦理結果數組:

if ($result -> num_rows()) 
{ 
    foreach ($result -> result_array() as $entry) 
    { 
     // do something 
    } 
}