我正在使用 Serialize 函数将数组存储在我的 MYSQL 数据库中,然后我在其他页面中取消序列化他。
数组结构如下所示:
Array ( [0] => Array ( [names] => somename1 [rating] => 10 ) [1] => Array ( [names] => somename2 [rating] => 9 ) )
当我将数组插入数据库时,我使用此函数将其转换为字符串:
$array_string=mysql_escape_string(serialize($arr));
然后,当我进行 unSerialize 时,我不知道如何将字符串(数据库中的数组)恢复到之前的结构。 (如何将此字符串转换回数组)
我知道我必须使用这一行:
$arr=explode("|",$list);
在某种程度上,但我无法将其恢复到之前的数组结构。
这行的结果在数组结构上有点不同:
Array ( [0] => Array( [0] => Array ( [names] => d [rating] => 7 ) [1] => Array ( [names] => b [rating] => 6 ) ) )
Thanks
序列化的相反是反序列化 http://php.net/manual/en/function.unserialize.php.
$old_array = unserialize($serialized_array_string_from_db);
将序列化的值存储到数据库中,不允许单独查询它们。
您必须获取序列化值,反序列化,然后才能开始使用它们。
从数据库设计的角度来看,这不是很有效。我的建议是在额外的表中为“名称”和“评级”创建单独的字段。
将数组序列化存储到数据库
$array = array('names' => 'somename1', 'rating' => 10);
$array_serialized_to_string = serialize($array);
doStoreToDb($array_serialized_to_string, somewhere);
从数据库中获取序列化数组
$array_serialized_to_string = doFetchFromDb(somewhere);
$array = unserialize($array_serialized_to_string);
数组结构的差异可能是查询“返回集为数组”的结果。
只需删除外部数组:
$old_array = unserialize($serialized_array_string_from_db);
$array = $old_array[0];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)