反序列化()数据库的值,并将其放在foreach之后的json_encode中



我使用函数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);

最新更新