2014-12-26 125 views
0

我从数据库中提取了“form_json”,该数据库中包含json保存的所有表单模板。代码为:Json字符串解码mysql

<?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 

} 
?> 

现在,我想解码所有这些jsons被保存在行form_json。无论如何去遍历或者什么?

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

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

+0

不知道你在问什么。它只是'var_dump(json_decode($ url))'? – Barmar

回答

0

你可以做的最好的事情就是将单个json字符串存储到数组中。问题是,你的JSON字符串编码,所以你需要先Concat的他们,如果你想一次全部结果:

$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>"; 
?> 
0
$json = '{"value":"Form Title","name":"title"}'; 
$data = json_decode($json); 
$value = $data->value; //will output = Form Title 
$title = $data->title; //will output = title 

我希望这会帮助