php - Json字符串解码mysql

标签 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 行中的所有这些 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/

相关文章:

php - 复杂SQL查询优化建议

php - 如何从 mysql 数据库中完美排序

mysql - 从 woocommerce 数据库中删除所有 sku

javascript - Parsley ajax 发送 post 变量

javascript - React JS - IMG onclick 事件后无法更新文本

php pdo代码比较两个表中的数据并返回结果

python - MySQL连接器

javascript - jQuery Datatables 从服务器加载数据

json - 如何将 JSON 记录插入 PowerApps 中的 Common Data Service 实体?

javascript - 如果 JSON 值包含 "Most_Likely",如何拆分它?