2011-09-08 74 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