J'ai une base de données où je stocke des données, et un champ est une chaîne json.Récupérer un champ json du champ mysql avec PDO
-je insérer un JSON dans ce domaine:
$stmt->bindParam(":settings", json_encode($widget->settings));
Puis lorsque je tente de récupérer le disque que j'obtenir ma ligne avec la colonne de paramètres sous forme de chaîne. J'ai besoin de mes données pour être json, donc je devrais décoder ce champ avant de sortir mes enregistrements. Si je vais avec:
$app->response->setBody(json_encode($data, JSON_NUMERIC_CHECK));
je reçois quelque chose comme:
"name":"My Name","label":null,"row":null,"settings":"{\"site\":\"dfsdf\",\"action\":\"UrlInfo\"}"
avec les paramètres se sont échappés. Je devrais d'abord décoder les paramètres, puis encoder à nouveau pour afficher mes résultats. Comment puis-je faire pour résoudre ceci?
MISE À JOUR:
je récupérer mes données à l'aide PDO, donc j'obtenir un tableau:
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
Avant sauver ce que j'ai:
"settings":{"site":"fff","action":"UrlInfo"}}
Quelle est la valeur de la chaîne avant de l'enregistrer dans la base de données? – MrD
Avant d'avoir la même chaîne JSON. J'utilise angularjs comme frontend, donc je travaille principalement avec l'objet javascript – Tropicalista
De votre message je peux conclure que vous encodez vos données deux fois. La première fois avant de l'insérer dans DB, et la deuxième fois lorsque vous le lisez depuis DB. Lorsque vous lisez vos données depuis la base de données, vous devez préformer json_decode (VOTRE STRING FROM DB) car vos données sont déjà codées. – MrD