我正在从已为所有表单模板保存json的数据库中获取“ form_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中的json。无论如何有遍历或什么?
$json ='{"value":"Form Title","name":"title"}';
var_dump(json_decode($json));
var_dump(json_decode($json, true));
这就是我们的解码方式,但这是针对一个字符串/一个表单模板的。我可以在数据库中保存许多json字符串/许多表单模板。我应该能够解码所有内容。
最佳答案
为此,您可以做的最好的事情是将单个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>";
?>
关于php - Json字符串解码MySQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27652216/