Json字符串解码mysql

时间:2014-12-26 02:08:48

标签: php mysql json

我从数据库中获取“form_json”,其中为所有表单模板保存了json。代码是:

<?php
include ('connection.php');


$id = intval($_GET['frmid']);
$results = mysqli_query($conn, "SELECT form_json FROM form WHERE form_id=$id");    
while ($row = mysqli_fetch_array($results))     
 {       
$url = $row['form_json'];
echo $url; //Outputs: 2

}
 ?>

现在,我想解码所有这些正在行form_json中保存的jsons。无论如何还要遍历什么?

   $json ='{"value":"Form Title","name":"title"}';
   var_dump(json_decode($json));
   var_dump(json_decode($json, true));

这是我们解码的方式,但这是一个字符串/一个表单模板。我可以在数据库中保存许多json字符串/许多表单模板。我应该可以解码所有。

2 个答案:

答案 0 :(得分:0)

您可以做的最好的事情是将单个json字符串存储到数组中。问题是,你的json字符串是编码的,所以如果你想一次得到所有结果,你需要先将它们连接起来:

$json = array();
$results = mysqli_query($conn, "SELECT form_json FROM form WHERE form_id=$id");    
while ($row = mysqli_fetch_array($results)) {       
    array_push($json, $row['form_json']);
}

$json = implode(",",$json); // concats all json strings with commas

此时,您有一个大字符串。要成功解码,您必须将字符串周围的容器包装为有效的解析,因为您的值已经是json并且您需要一个容器:

$json = '{"templates": [' . $json . ']}';

现在你有一个可以解码的有效json字符串,无论是数组还是对象。为了更好地理解一个简单的工作示例:

<?php
    $json1 = '{"value":"Form Title","name":"title"}';
    $json2 = '{"value":"A Message","name":"message"}';

    $arr = array($json1, $json2);
    $json = implode(",", $arr);
    $json = '{"templates": ['.$json.']}';
    $json = json_decode($json, true); // true if you want an array, false if you want an object

    echo "<pre>";
    print_r($json); // returns a multidimensional array of all templates
    echo "</pre>";
?>

答案 1 :(得分:0)

$json = '{"value":"Form Title","name":"title"}';
$data = json_decode($json);
$value = $data->value; //will output = Form Title
$title = $data->title; //will output = title

我希望这个帮助