json数据字段和php json函数

时间:2018-12-26 19:45:55

标签: php mysql json

似乎我无法在MYSQL表中使用JSON-为字段选择数据类型时没有这样的选项-phpMyAdmin ver 4.8.3

问题-如果我使用php函数json_encodejson_decode来获取和设置varchartext字段内的值-我是否完全需要JSON字段?

3 个答案:

答案 0 :(得分:0)

您可以将JSON对象作为字符串存储在string字段中,也可以在包含JSON类型数据的字段中使用它

这在MySQL版本8中有效

优势

  1. 这种类型的优点是它可以自动验证存储在JSON列中的JSON文档,并且无效的文档会产生错误。
  2. 优化的存储格式。存储在JSON列中的JSON文档将转换为内部格式,从而可以快速读取对文档元素的访问权限

您可以在这里The JSON Data Type

阅读整个文档。

缺点

如果您选择使用VARCHARTEXT字段将JSON数据存储为字符串,则需要从数据库中检索到正确的数据后才能正确解析该数据。表现得像一个正确的JSON对象

答案 1 :(得分:0)

是的,除非您不想在这些json字符串的键值上执行搜索。 MySQL Json Type允许您执行此操作,除了以有效的方式存储json之外。

您可以使用Blob或文本类型。 Varchar对于json来说太短了,除非您的json长度少于255个字符。

斑点可能是个好主意。您可以将其映射到php中的资源(而不是将整个文件加载到内存中),然后使用json流解析器like this one来读取文件的内容。

但是,再次,将json存储为字符串将不允许您使用json数据以有效的方式进行查询

  

注意:Mysql从5.7.8开始支持Json类型。 PhpMyAdmin是另一软件。如果您的json类型不存在,可能是因为您的MySQL版本。在您的终端中运行mysql -V进行检查。

答案 2 :(得分:0)

As per the official documentation

  

从MySQL 5.7.8开始,MySQL支持RFC 7159定义的本机JSON数据类型,该类型可有效访问JSON(JavaScript对象表示法)文档中的数据。

检查您的MySQL版本以了解它是否支持JSON数据类型。

您的问题的答案:

您可以json_encode将数据存储在text字段中。从数据库表中检索它之后,执行json_decode