Bonjour !
J'enregistre un tableau serialisé (avec serialize donc) dans une table pour, par la suite, le déserialiser. Seulement je rencontre des erreurs du type :
unserialize() [<a href='function.unserialize'>function.unserialize</a>]: Error at offset 0 of 4 bytes
En fait, quand je fais juste un :
$rqt = "INSERT INTO ... ('".serialize($tab)."')";
Je n'ai pas d'erreur et le unserialize marche bien. En revanche si il y a un ' dans une des valeurs du tableau, évidemment la requête ne marche plus. C'est pourquoi il faut rajouter :
$rqt = "INSERT INTO ... ('".mysql_real_escape_string(serialize($tab))."')";
Là la requête est bien exécutée, mais maintenant, quand je fais unserialize, j'ai l'erreur mentionnée plus haut.
J'ai essayé d'encoder/décoder de différente manière (urlencode, rawurlencode, utf8_encode et même base64_encode), ou aussi de remplacer mysql_real_escape_string par addslashes, mais rien n'y change...
Comment faire pour résoudre ce problème ?
Merci d'avance !
Edit :
Je viens même de tester :
$rqt = "INSERT INTO ... ('".str_replace("'", "", serialize($tab))."')";
et :
1 2 3 4 5
|
foreach ($tab as $c => $v) {
$tab[$c] = str_replace("'", "", $v);
}
$rqt = "INSERT INTO ... ('".str_replace("'", "", serialize($tab))."')"; |
et j'ai toujours l'erreur...
Partager