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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$rqt = "INSERT INTO ... ('".str_replace("'", "", serialize($tab))."')";
et :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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...