unserialize()数据库的值,并在foreach之后将其放入json_encode中

时间:2011-09-01 11:52:38

标签: php codeigniter serialization json denormalized

我使用函数$row->units => serialize()插入数据库值(数组)[$row->units],如何在unserialize()中使用json_encode回显它们$row->name? (在jQuery中返回发送ajax调用)

数据库中的列:

  

$ row-> units =>   a:6:{i:0;s:15:"Coffee";i:1;s:14:"Satellite";i:2;s:11:"Game Notes";i:3;s:14:"Internet";i:4;s:10:"Pool";i:5;s:0:"";}

     

$行级别>名称=> George Kurdahi

$query = $this->db->query("SELECT * FROM arraha WHERE name LIKE '%$search%' ORDER BY name asc");

$data = array();
foreach ($query->result() as $row)
{
   $data[] = array('name' => $row->name, 'units' => unserialize($row->units)); // Line 22
}
return json_encode($data)

上述代码的错误是:

  

遇到PHP错误

     

严重性:注意

     

消息:unserialize()[function.unserialize]:偏移277处的错误   281个字节

     

文件名:model.php

     

行号:22

1 个答案:

答案 0 :(得分:1)

您在使用字符编码时遇到了一些问题:

s:15:"Coffee"

15表示以字节为单位的长度。因此,您必须将从DB获取的数据的编码转换为与serialize()

一起使用的编码

您可以使用json_encode而不是serialize:

$arr = array('Coffee', 'Satellite', /*...*/);
$row->units = json_encode($arr);