我使用函数serialize()
=> [$row->units]
插入数据库值(数组)$row->units
,如何将json_encode
中的unserialize()
与$row->name
相呼应?(jQuery中返回ajax调用的send)
数据库中的列:
$行->单位=>
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:"";}
$row->name=>
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.]:在偏移量277处出现错误281字节
文件名:model.php
行号:22
字符编码有一些问题:
s:15:"Coffee"
15表示以字节为单位的长度。因此需要将从DB获取的数据编码转换为serialize()
使用的编码你可以使用json_encode代替serialize:
$arr = array('Coffee', 'Satellite', /*...*/);
$row->units = json_encode($arr);