2012-07-11 3 views
-1

J'essaie de désérialiser la chaîne qui est stockée dans la table mysql.désérialiser ne fonctionne pas

est la chaîne stockée dans la table mysql.

a:3:{s:15:\"purchase_amount\";d:500;s:4:\"more\";d:7;s:4:\"less\";d:11.5;} 

au moment de l'insertion j'avais écrit le code suivant.

addslashes(serialize(array('purchase_amount' => $values['purchase_amount'], 'more' => $values['transportaion_cost_gretter'], 'less' => $values['transportaion_cost_lesser']))) 

A la récupération, j'avais écrit le code followin.

unserialize(stripslashes($row->getTransportaionCost())); 

Je reçois l'erreur suivante.

Notice: unserialize() [function.unserialize]: Error at offset 5 of 98 bytes 

EDIT:

j'ai essayé json_encode et json_decode ...

Voici les données JSON dans le tableau mysql

{"purchase_amount":500,"more":7,"less":11.5} 

qui suit est le décodage JSON en php.

var_dump(json_decode($row->getTransportaionCost())); //null 

Quelqu'un peut-il me dire quel est le problème?

+3

avez-vous essayé 'unserialize (stripslashes ($ row-> getTransportaionCost())); –

+0

vous avez ajouté des barres obliques puis vous voulez désérialiser avant de supprimer les barres obliques –

+0

oui j'ai essayé unserialize (stripslashes ($ row-> getTransportaionCost())); mais ne fonctionne toujours pas. – hardik

Répondre

0

Le problème vient du fait que lorsque vous stockez vos données dans la base de données, ces antiglisse ne devraient pas être ici. Supprimer les addslashes, cela fonctionnera mieux

+0

jeter un oeil modifications. – hardik

+0

faire un 'var_dump ($ row-> getTransportaionCost());' aussi ... –

Questions connexes