[MySQL]Résultat dans une colonne en json

Petit nouveau ! | 3 Messages

28 févr. 2020, 13:08

Bonjour j'ai un soucis ...
je suis en train de tester une requette dans une table ayant des contenus en JSON
le contexte :
j'ai une table contenant des items x6072_k2_items
avec le champs suivant extra_fields
contenant (exemple)

Code : Tout sélectionner

[{"id":"1","value":"0000 €"}, {"id":"2","value":" Des requins marteaux en abondance"}, {"id":"3","value":" images/Forfaits/c6bo-voyages-plongee-croisiere-plongee-a*-l-ile-coco-avec-la-flotte-sea-hunter"}, {"id":"4","value":""}, {"id":"5","value":""}, {"id":"6","value":""}, {"id":"7","value":"Transferts inclus"}, {"id":"8","value":""}, {"id":"9","value":""}, {"id":"10","value":"De décembre à*avril "}, {"id":"11","value":"bancs de requins marteaux, raies mantas "}, {"id":"12","value":"Niveau 2 / Advanced Open Water avec 50 plongées minimum, Deep Diver recommandé"}, {"id":"13","value":"7"}, {"id":"14","value":"5"}, {"id":"15","value":"1"}]
requette

Code : Tout sélectionner

SELECT * FROM `x6072_k2_items` where json_contains(extra_fields,'{"id":"7","Transferts inclus"}','$')=1 LIMIT 0, 25
Erreur

Code : Tout sélectionner

#3141 - Invalid JSON text in argument 1 to function json_contains: "Invalid escape character in string." at position 846.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

28 févr. 2020, 14:41

Vu le message d'erreur "Invalid JSON", je serais toi j'utiliserai un validateur de JSON pour vérifier celui que tu passes en paramètre :
https://jsonlint.com/
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 3 Messages

28 févr. 2020, 14:49

json lint me dis que le json est ok

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

28 févr. 2020, 14:59

json lint me dis que le json est ok
Non, il ne dit pas ça :-D

Tu as bien testé celui que tu passes en paramètre de ta fonction json_contains() ?
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 3 Messages

28 févr. 2020, 15:06

ok j'avou je débute un peu sur le json
... donc ce serait un erreur de syntaxe ..

Code : Tout sélectionner

SELECT * FROM `x6072_k2_items` where json_contains(extra_fields,'{"id":"7","value":"Transferts inclus"}')=1 LIMIT 0, 25
le jsonlit

Code : Tout sélectionner

{ "id": "7", "Transferts inclus" }

Code : Tout sélectionner

Error: Parse error on line 3: ..."Transferts inclus"}