使用PDO从mysql字段中检索json字段

时间:2014-09-08 22:17:47

标签: php slim

我有一个数据库,我存储一些数据,一个字段是一个json字符串。

我在这个字段中插入一个json:

        $stmt->bindParam(":settings", json_encode($widget->settings));

然后,当我尝试检索记录时,我将设置列的行作为字符串。我需要我的数据是json,所以我应该在输出我的记录之前解码这个字段。如果我选择:

        $app->response->setBody(json_encode($data, JSON_NUMERIC_CHECK));

我得到类似的东西:

"name":"My Name","label":null,"row":null,"settings":"{\"site\":\"dfsdf\",\"action\":\"UrlInfo\"}"

设置已转义。我应首先解码设置,然后再次编码以输出我的结果。我该怎么做才能解决这个问题?

更新:

我使用PDO检索我的数据,所以我得到一个数组:

        $data = $stmt->fetchAll(PDO::FETCH_ASSOC);

在我保存之前,我有:

"settings":{"site":"fff","action":"UrlInfo"}}

1 个答案:

答案 0 :(得分:2)

检索数据时,应使用json_decode来反转插入时所执行的编码。

foreach ($data as &$row) { // Use reference so we can modify in place
    $row['settings'] = json_decode($row['settings']);
}
$app->response->setBody(json_encode($data, JSON_NUMERIC_CHECK));