PDO getColumnMeta 没有 JSON 的本机类型
Posted
技术标签:
【中文标题】PDO getColumnMeta 没有 JSON 的本机类型【英文标题】:PDO getColumnMeta has no native type for JSON 【发布时间】:2018-05-03 18:27:39 【问题描述】:当使用 PDO 调用 getColumnMeta
函数时,对于 JSON 数据类型的字段,它不会返回 native_type
字段。有没有办法让它返回一个 JSON 本机类型?它确实返回任何其他数据类型的类型,例如 string
、int
和 float
我正在使用标准 PDO 驱动程序和 mysql 5.7 运行 php7
【问题讨论】:
getColumnMeta 返回 用于表示列值的 PHP 原生类型。 PHP 没有 json native type,因为 json 几乎只是一个字符串。 @jeroen JSON 类型是 MySQL 的最新成员。 link。但是当发送到 php 时,它确实只是一个字符串。你的用例是什么?为什么要知道是不是字符串? 我正在构建一个数据库控制器,它可以为您转换为正确的数据类型。否则,每次我想获取特定的 JSON 行时,我都必须重复使用该函数。 你不需要这样的控制器,PDO can already convert the types给你 @FirstOne 所以如果我在论坛上回答一个单词“true”,我的回复将被视为 JSON?这是一种很滑的方法,永远不要尝试走那条路 【参考方案1】:不,没有。
getColumnMeta()
仍然是一个实验性功能。实际的规范从未设计过,唯一可用的实现是实验的结果。您获得的值没有多大意义,因为对于它们的含义没有达成共识。
JSON 是 MySQL 中新增的一种类型,是在实验之后添加的。该类型不存在于代码中,如果需要,必须有人添加它,但问题是它实际上应该代表什么。您在 PHP 中从 JSON 列类型接收的数据以字符串形式出现。 PHP 没有原生 JSON 类型,而是将 JSON 数据表示为字符串。您可以将其解码为数组或对象,但这是应用程序的作用。
【讨论】:
以上是关于PDO getColumnMeta 没有 JSON 的本机类型的主要内容,如果未能解决你的问题,请参考以下文章