【问题标题】:PDO getColumnMeta has no native type for JSONPDO getColumnMeta 没有 JSON 的本机类型
【发布时间】:2018-05-03 18:27:39
【问题描述】:

当使用 PDO 调用 getColumnMeta 函数时,对于 JSON 数据类型的字段,它不会返回 native_type 字段。有没有办法让它返回一个 JSON 本机类型?它确实返回任何其他数据类型的类型,例如 stringintfloat

我正在使用标准 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?这是一种很滑的方法,永远不要尝试走那条路

标签: php mysql json pdo


【解决方案1】:

不,没有。

getColumnMeta() 仍然是一个实验性功能。实际的规范从未设计过,唯一可用的实现是实验的结果。您获得的值没有多大意义,因为对于它们的含义没有达成共识。

JSON 是 MySQL 中新增的一种类型,是在实验之后添加的。该类型不存在于代码中,如果需要,必须有人添加它,但问题是它实际上应该代表什么。您在 PHP 中从 JSON 列类型接收的数据以字符串形式出现。 PHP 没有原生 JSON 类型,而是将 JSON 数据表示为字符串。您可以将其解码为数组或对象,但这是应用程序的作用。

【讨论】:

    猜你喜欢
    • 2016-06-09
    • 2010-11-12
    • 2013-05-12
    • 2012-07-06
    • 2015-04-01
    • 2023-03-18
    • 2018-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多