【发布时间】:2011-11-08 08:26:46
【问题描述】:
我使用函数serialize()=>[$row->units] 插入数据库值(数组)$row->units,如何在json_encode 和$row->name 中使用unserialize() 回显它们? (在 jQuery 中为 ajax 调用返回发送)
数据库中的列:
$row->单位 =>
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.unserialize]:偏移 277 处出错 281 字节
文件名:model.php
行号:22
【问题讨论】:
-
要么序列化失败,要么列不够大,无法容纳数据,要么存在字符集问题。您能否向我们展示您反序列化之前的字符串,以及
SHOW CREATE TABLE arraha输出? -
编辑了我的帖子。请再看一遍。
-
为什么要将序列化的值放入 RDBMS?
-
创建另一个表,比如
arraha_units,有两个字段,比如arraha_id(在arraha中为您的PK 提供FK)和unit(也可能是它自己的PK)。去掉arraha中的units列。现在将(1, 'Coffee')、(1, 'Satellite')等行插入到这个新表中。 -
现在您可以使用以下命令获取 id=1 的所有单位:
SELECT unit FROM arraha_units WHERE arraha_id=1
标签: php codeigniter serialization json denormalized