【问题标题】:How to store a Json data in one field?如何在一个字段中存储 Json 数据?
【发布时间】:2015-12-01 16:42:02
【问题描述】:

我知道这个问题被问了很多,我也研究过,相信我。

我有一个包含多个变量的 Json 文件。我想获取该 Json 文件并将其存储在 MySql 数据库上的单个 BLOB 字段中。

我做了 json_decode() 但是当我尝试存储它时,PHP 给了我一个错误,因为 json_decode() 返回一个 php 数组但 bindParam 想要一个字符串变量。

我试过 implode(",", json_decode($data,true)) 但没用。

你能帮帮我吗...

我的 JSON 文件如下所示;

[
    { "xyz": "abc",
      "izd": 1
    },
    { "xyz": "abc",
      "izd": 1
    },
    { "xyz": "abc",
      "izd": 1
    }]

我的PHP代码是这样的;

$json = $_POST["jsonfile"];
$jsondata = json_decode($json,true);
$implodedjsondata = implode(",",$jsondata); // In here, php gets error in impode ( Error : Notice: Array to string conversion)

$Query = $conn->prepare("INSERT INTO table1(somedata) VALUES(:data)");

$Query->bindParam(':data',$implodedjsondata); // In case of not using implode, this line gets error( Error : Notice: Array to string conversion)
$Query->execute();

谢谢...

【问题讨论】:

  • 如果我理解不好,你必须做 json_encode,而不是 decode。
  • @IsmaelFuentes 非常感谢,但这不是我的错,因为 php.net 手动翻译让我黯然失色 :(

标签: php mysql json implode


【解决方案1】:

它已经是 json 了?不要对它做任何事情,按原样插入它。并且使用 bindValue,bindParam 是一个优化的东西,当你有很多数据需要在循环执行语句时快速更改..

$json = $_POST["jsonfile"];

$Query = $conn->prepare("INSERT INTO table1(somedata) VALUES(:data)");

$Query->bindValue(':data',$json); // In case of not using implode, this line gets error( Error : Notice: Array to string conversion)
$Query->execute();

【讨论】:

  • 好的,我存储了 Json 文件,但是当我在数据库中获取此文件时,这将返回一个数组而不是 json。我该如何解决这个问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-21
  • 2012-11-13
  • 1970-01-01
  • 1970-01-01
  • 2021-06-10
  • 1970-01-01
  • 2010-10-21
相关资源
最近更新 更多