从mysql返回数据并反序列化它

时间:2014-07-23 10:47:33

标签: php mysql

我的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),但它说错误因为它是一个数组。

2 个答案:

答案 0 :(得分:1)

PHP函数unserializehttp://php.net/manual/en/function.unserialize.php)将为您提供帮助。

unserialize($result[0]['value']);

将返回数组。

答案 1 :(得分:0)

您似乎正在使用某些PHP框架(非常类似于CodeIgniter,但不确定)。 应该有一个函数来从结果集中确切地检索一行(第一行)。

现在你正在询问一个不好的解决方法。通常,DB驱动程序具有良好的接口,可以从查询/视图中获取多少行/列。

如果我需要浏览结果数组,我通常会使用以下语句:

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