2011-09-08 1 views
3

mes données sérialisé ressemble à ceciPHP désérialiser les données vides, pourquoi est-ce?

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";} 

Lorsque je tente de unserialize, il se révèle être vide.

mon code:

$urlnames = unserialize($row['url_name']); 

foreach($urlnames as $names){ 

    echo $name; 
} 

Qu'est-ce que je fais mal?

Merci

+0

Vous devez effectuer un contrôle sur la fonction 'unserialize()' pour vous assurer qu'il unserializes correctement; Si le paramètre ne peut pas être désérialisé, il renvoie false. Quelque chose comme 'if (! $ Urlnames = unserialize ($ row ['url_name'])) {echo 'ne peut pas désérialiser'; } '. Si la condition est vraie, vous saurez que '$ row ['url_name']' ne contient pas le tableau sérialisé. – Pete171

Répondre

4

La chaîne sérialisée est faux. Il devrait y avoir un caractère de plus dans la chaîne "Dart's find" - je ne sais pas pourquoi il en manque un, mais en ajouter un fera fonctionner correctement.

See for yourself.

+0

Je raconte qu'il y a quelque chose qui manque, je pense que je fais quelque chose de mal du côté de la sérialisation, mais je ne sais pas quoi. –

1

Sur l'index 1, vous avez seulement 31 caractères, c'est pourquoi cela ne fonctionne pas.

+0

Oui, mais comment le personnage disparaît-il? C'est ce que je me demande quand j'insère des données brutes. –

+0

L'avez-vous mis dans une base de données? – DenMette

1

Avez-vous obtenu votre chaîne sérialisée de la base de données?

Si vous l'obtenez à partir de là, votre barre oblique inverse est manquante. C'est ton 32ème personnage.

plus d'informations sur les bases de données et vérifier antislashs Google/Yahoo/bing ...

+0

Oui c'est ça, j'utilise addslashes() pour ajouter le backslash mais quand je le désérialise il manque pour une raison quelconque. –

+0

Oui, c'est dans une base de données –

+0

désolé j'étais indisponible pour écrire une réponse. Vous êtes backslash est parti quand vous obtenez vos informations sur la base de données. Vous n'avez pas besoin d'ajouter des barres obliques lors de la sérialisation. C'est le concept. – DenMette

Questions connexes