2 votes

PHP json_encode produit un JSON invalide lorsqu'il est stocké dans MySQL

J'ai déjà cherché un peu sur Google, sans succès. J'exécute un tableau PHP standard via $encoded = json_encode($myArray);

Avant de le stocker dans une base de données MySQL. Dans 99 % des cas, tout va bien, mais il arrive que le JSON codé soit corrompu.....

{ "value": " }

qui sont stockées dans la base de données. C'est une occasion rare, en fait je ne peux pas encore le reproduire dans mon environnement de développement local, mais l'utilisateur le peut !

Les données stockées proviennent d'un <textarea> J'ai essayé tous les caractères possibles et imaginables et j'ai même forcé des caractères non UTF-8 à entrer dans le formulaire, mais cela n'a jamais provoqué ce problème.

J'ai vraiment du mal à trouver le fond du problème. Tout d'abord, je ne vois pas comment json_encode produit le résultat ci-dessus, peut-être que le fait de comprendre cela aiderait à comprendre ce qui se passe, mais je suis coincé.

Tout conseil, toute aide, toute indication seraient les bienvenus,

Je vais essayer de le reproduire.

0voto

Assurez-vous que le champ de votre base de données est suffisamment long. J'ai eu un problème où les données encodées en json étaient plus longues que la longueur du champ et étaient tronquées, ce qui les rendait invalides... Parfois, en regardant les données encodées, il est difficile de voir qu'elles sont coupées à la fin. Faites un écho sur votre page php et comparez avec les données qui se retrouvent dans le champ de la base de données...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X