PHP反序列化数据为空,这是为什么?
我的序列化的数据看起来像这样PHP反序列化数据为空,这是为什么?
a:6:{i:0;s:12:"Early humans";i:1;s:32:"Apes And Hominids Dart's Find";i:2;s:36:"The hunter gatherers of South Africa";i:3;s:25:"Early Humans The Eve Gene";i:4;s:50:"Australopithecines, Homo ergaster and Homo sapiens";i:5;s:21:"Landscapes of history";}
当我尝试和反序列化,它原来是空的。
我的代码:
$urlnames = unserialize($row['url_name']);
foreach($urlnames as $names){
echo $name;
}
我在做什么错?
感谢
序列化的字符串是错误的。 “Dart's find”字符串中应该还有一个字符 - 我不知道为什么会丢失字符串,但添加一个字符可以使其正常工作。
我重新说有缺失的东西,我想我在序列化方面做错了什么,但不知道是什么。 –
你有没有得到你的序列化的字符串形式的数据库?
如果你从那里得到它,比你的反斜杠丢失。这是你的第32个角色。关于反斜线和数据库
更多信息检查谷歌/雅虎/冰...
是的就是这样,我使用addslashes()来添加反斜杠,但是当我反序列化它时由于某种原因失踪。 –
是的,它在数据库中 –
对不起,我无法写回复。 当你从数据库中获取信息时,反斜杠消失了。序列化时不需要添加斜线。这就是这个概念。 – DenMette
您应该执行检查的'反序列化()'函数,以确保它unserializes正确;如果参数不能反序列化,那么它将返回false。 类似'if(!$ urlnames = unserialize($ row ['url_name'])){echo'can not unserialize'; }'。如果条件为真,您将知道'$ row ['url_name']'不包含序列化数组。 – Pete171