2011-09-08 38 views
3

我的序列化的数据看起来像这样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; 
} 

我在做什么错?

感谢

+0

您应该执行检查的'反序列化()'函数,以确保它unserializes正确;如果参数不能反序列化,那么它将返回false。 类似'if(!$ urlnames = unserialize($ row ['url_name'])){echo'can not unserialize'; }'。如果条件为真,您将知道'$ row ['url_name']'不包含序列化数组。 – Pete171

回答

4

序列化的字符串是错误的。 “Dart's find”字符串中应该还有一个字符 - 我不知道为什么会丢失字符串,但添加一个字符可以使其正常工作。

See for yourself

+0

我重新说有缺失的东西,我想我在序列化方面做错了什么,但不知道是什么。 –

1

在索引1上,您只有31个字符,这就是为什么它不起作用。

+0

是的,但是我如何插入原始数据,这个字符如何丢失? –

+0

你把它放到数据库中吗? – DenMette

1

你有没有得到你的序列化的字符串形式的数据库?

如果你从那里得到它,比你的反斜杠丢失。这是你的第32个角色。关于反斜线和数据库

更多信息检查谷歌/雅虎/冰...

+0

是的就是这样,我使用addslashes()来添加反斜杠,但是当我反序列化它时由于某种原因失踪。 –

+0

是的,它在数据库中 –

+0

对不起,我无法写回复。 当你从数据库中获取信息时,反斜杠消失了。序列化时不需要添加斜线。这就是这个概念。 – DenMette

相关问题