Ce que vous faites est peut-être erroné. Il y a beaucoup de décisions que vous avez prises qui ne sont absolument pas nécessaires, et elles peuvent aussi ne pas être appropriées. D'une part, stocker des tableaux "gelés" dans la base de données est généralement une mauvaise idée car vous ne pouvez rien faire d'autre que de les récupérer (vous ne pouvez pas les modifier ou les interroger en fonction de leur contenu). Les solutions qui "corrigent" ce problème sont orientées base de données et incluent la modification de votre schéma de table. Je ne sais pas ce que vous essayez de faire, donc je ne vais pas aller plus en détail.
Ensuite, si vous ne voulez sérialisation des tableaux dans votre base de données (il y a des cas d'utilisation légitime) (modifier:et seulement l'intention d'y accéder par le biais du code PHP - comme cela a été très correctement signalé), la seule chose que vous devez utiliser est la fonction serialize
- pas json_encode
ou toute autre chose. C'est la raison même de cette fonction. Lorsque vous récupérez les valeurs de la base de données, utilisez deserialize
pour récupérer le tableau.
Enfin, lors de l'injection d'une variable dans une requête SQL, vous devez lui échapper avec mysql_real_escape_string
(ce que vous ne faites pas).
Il serait beaucoup mieux à faire:
$sql = sprintf('INSERT INTO table (data) VALUES(\'%s\')',
mysql_real_escape_string(serialize($data)));
$result = mysql_query($sql);
Qui a dit que vous deviez utiliser 'base64_encode' pour le stocker dans la base de données? Qu'y a-t-il de mal à faire un 'json_encode', ou même' serialize'? –
Généralement, il n'est pas bon de stocker un tableau dans une base de données. De quoi vous occupez-vous? – ajreal