将json数据作为数组存储在数据库中

我正在开发一个项目,用户可以在其中填写他/她的个人资料。因此,在存储用户的社交媒体链接时,我有一个 json 文件,其中包含名称、favicon、url 等所有引用。所以我可以使用 json_decode foreach 它并显示一个文本字段。但是如何将数据库中输入的所有链接存储为 json 格式并使用完整的 URL 检索它们。


这是json文件


{

  "facebook": {

    "icon": "fab fa-facebook",

    "title": "Facebook",

    "url": "https://facebook.com/%s"

  },

  "instagram": {

    "icon": "fab fa-instagram",

    "title": "Instagram",

    "url": "https://instagram.com/%s"

  }

}

这就是我显示它的方式


 <?php foreach($available_buttons as $key => $button):  ?>

       <div class="col-md-4 mb-3">

            <div class="form-group">

                 <label ><i class="<?= $button->icon ?> mr-2"></i> <?= $button->title ?></label>

                 <input type="text" name="buttons[<?= $key ?>]" class="form-control" />

            </div>

       </div

 <?php endforeach; ?>

我正在使用 json_encode 处理它并将其提交给 db


$buttons = json_encode(clean_array($_POST['buttons']));

在干净的数组函数中传递数据


function clean_array(Array $data) {

    foreach($data as $key => $value) {

        $data[$key] = filter_var($data, FILTER_SANITIZE_STRING);

    }


    return $data;

}



但是当我尝试提交时,我在数据库中得到了错误,例如“{'instagram': 'false', 'instagram': 'false'}”


我该怎么做?


慕慕森
浏览 272回答 2
2回答

慕娘9325324

您可以将数据作为 JSON 存储在数据库中,然后从数据库中再次获取并使用 json_decode 进行转换。MySQL 支持 JSON 数据类型。看看这个链接。https://dev.mysql.com/doc/refman/5.7/en/json.html

慕哥6287543

filter_var() 失败时可以返回 FALSE,查看文档:https : //www.php.net/manual/en/function.filter-var.php作为第一个参数,您应该传递标量或字符串,但您传递数组 $data(数组不是标量),因此 filter_var 失败并返回 false。也许你想传递 $value?例如,你的函数应该是什么样子的例子function clean_array(Array $data) {&nbsp; &nbsp; foreach($data as $key => $value) {&nbsp; &nbsp; &nbsp; &nbsp; $data[$key] = filter_var($value, FILTER_SANITIZE_STRING);&nbsp; &nbsp; }&nbsp; &nbsp; return $data;}
打开App,查看更多内容
随时随地看视频慕课网APP