Page 1 sur 1

Update Json MySQL error

Posté : 07 déc. 2022, 18:57
par defiraid
Bonjour,

je vais chercher un JSON dans ma BDD. Je l'affiche dans un champs de texte et je renvoie vers la BDD au cas où il serait modifié. Donc, remplacer tout un fichier JSON stocké en BDD par un autre.

Code : Tout sélectionner

$requete = "UPDATE jeux_textes SET parametres='" . $contenu . "' WHERE langue='fr' "; print_r($requete); $reponse = mysqli_query($db, $requete);
le print-r donne :
UPDATE jeux_textes SET parametres='{ "niveau": [ { "melange": "dibon", "reponse": "bidon" }, { "melange": "tope", "reponse": "pote" } ] }' WHERE langue='fr'
dans $contenu, j'ai le JSON du champ de texte récupéré avec $_POST (

Code : Tout sélectionner

$contenu = $_POST['json'];
et l'erreur :
Error: %s Invalid JSON text: "Missing a name for object member." at position 5 in value for column 'jeux_textes.parametres'.
Déjà la position 5, c'est étrange. Et, j'ai vérifié la validité du JSON
{ "niveau": [ { "melange": "dibon", "reponse": "bidon" }, { "melange": "tope", "reponse": "pote" } ] }
dans un validateur en ligne : il est valide. Bref après 2h de googling, je sèche.

Merci pour votre aide.

Re: Update Json MySQL error

Posté : 07 déc. 2022, 19:15
par or 1
c'est quelle ligne qui génère ce message d'erreur ?

Re: Update Json MySQL error

Posté : 07 déc. 2022, 19:19
par defiraid
Bonjour,

le code :

Code : Tout sélectionner

$contenu = $_POST['json']; $requete = "UPDATE jeux_textes SET parametres='" . $contenu . "' WHERE langue='" . $_SESSION['langue'] . "'"; print_r($requete); $reponse = mysqli_query($db, $requete); if (!$reponse) { echo ("Error: \n" . mysqli_error($db)); exit(); }
c'est le retour de la requête (6ème ligne)

Re: Update Json MySQL error

Posté : 09 déc. 2022, 21:59
par two3d
Essaye d'insérer avec mysqli_real_escape_string()

Re: Update Json MySQL error

Posté : 10 déc. 2022, 17:26
par defiraid
Merci two3D.
Ça a l'air de marcher mais j'ai d'autres erreurs qui ne me permettent pas de voir si c'est vraiment concluant (upload dans DB). En tout cas, je n'ai plus l'erreur.

Re: Update Json MySQL error

Posté : 10 déc. 2022, 17:44
par two3d
Super, passe en Resolu, en haut à gauche ;)

Re: Update Json MySQL error

Posté : 13 déc. 2022, 13:37
par defiraid
En fait, non, ça n'a pas fonctionné :
Le print_r de la requête donne :

Code : Tout sélectionner

UPDATE jeux_textes SET parametres='{\r\n "niveau": [\r\n {\r\n "melange": "fhgghfgg",\r\n "reponse": "hghg"\r\n }\r\n ]\r\n}' WHERE jeu='29' AND langue='fr'
et le code d'erreur de mySQL :

Code : Tout sélectionner

Error: Invalid JSON text: "Missing a name for object member." at position 5 in value for column 'jeux_textes.parametres'

Re: Update Json MySQL error

Posté : 13 déc. 2022, 14:02
par two3d
Est ce que tu utilise https://www.php.net/manual/fr/function.json-encode.php pour $contenu ?

Re: Update Json MySQL error

Posté : 13 déc. 2022, 17:23
par defiraid
Pas mieux. ça rajoute des /r/n et j'ai une autre erreur :

Code : Tout sélectionner

Error: Invalid JSON text: "Invalid encoding in string." at position 2 in value for column 'jeux_textes.parametres'.
d'un autre côté si je mets le contenu du JSON en dur dans ma variable au lieu de la récupérer dans le champ de texte :

Code : Tout sélectionner

$contenu = '{ "niveau": [ { "melange": "sdf", "reponse": "dsss" }, { "melange": "sdfsdf", "reponse": "sdf" } ] }';
, ça marche!

ça sent vraiment l'encodage.