【发布时间】:2021-01-13 08:07:03
【问题描述】:
我通过序列化方法将数据存储在mysql表中,现在我想打印所有数据所以我写了mysql查询并尝试反序列化,因为数据是序列化格式但反序列化显示错误。
错误:
unserialize() expects parameter 1 to be string, array given
查询以获取所有记录
$this->db->select('*');
$this->db->from($table);
$result=$this->db->get()->result();
$unserialize_list=unserialize($result);
【问题讨论】:
-
不确定使用序列化数据是否是数据存储的最佳选择。 JSON 可能是更好的选择。
-
您的序列化数据在结果集中的一列中,您需要取消序列化,而不是从查询返回的列数组。
-
@NigelRen 之前我存储在 json 中,但是 json 对关联数组来说太糟糕了,我在 stackoverflow 帖子上也确认了这一点
-
如果您使用
select * from table,您将获得某种记录集。即使只有一列一行。然后将该记录集传递给 unserialze,它只需要一个字符串。从相应的行中取出相应的列并将其传递给反序列化。 -
您从响应中得到一个关联数组。只需像 $var=$result['columnname'] 一样使用 smth,然后使用 $var
标签: php arrays codeigniter serialization