【发布时间】:2021-04-10 02:19:33
【问题描述】:
我正在尝试将我的项目从 MySQL 迁移到 PostgreSQL。对于 MySQL,PHP 提供了很好的功能来获取 SELECT 查询元数据。
mysqli_fetch_field 或 mysqli_fetch_field_direct 函数可以为查询中的每个字段提供以下值
- 姓名
- 组织名称
- 表格
- 组织表
- 最大长度
- 长度
- 类型
- (以及其他一些我目前不感兴趣的)
例如,查询中“id”字段的示例查询和元数据将如下所示:
查询:
从 table1 t1 中选择 id 作为 id2
字段“id”的元数据:
- 姓名:id2
- 组织名称:id
- 表:t1
- orgtable : table1
- 长度:765
- 类型:253
mysqli_fetch_field 的好处是它能够返回查询中字段和表的别名和原始名称。
当我尝试为 PostgreSQL 模仿此功能时,我发现 PostgreSQL 没有等效的 mysqli_fetch_field 函数,相反,有几个 pg_field_* 函数,每个函数都为字段提供单个信息。
-
pg_field_name仅返回名称,对于此示例,它给出“id2” -
pg_field_table返回原始表名,例如“表 1” -
pg_field_type返回类型(这里没问题) -
pg_field_size返回字段长度(也可以)
显然,如果 pg_field_* 函数在查询中被重命名,而 mysqli_fetch_field 提供,则不会向程序员提供表/字段的原始名称。
有没有一种方法可以获取 PostgreSQL 中查询的“详细”元数据?它可以使用额外的查询或 DBMS 提供的工具,如 EXPLAIN 和 DESCRIBE(我也尝试过)或其他任何东西。
【问题讨论】:
-
这是一个错误,对不起。我用 mysqli_* 函数更新了帖子。
标签: php mysql postgresql