使用PHP从PostgreSQL获取所选列的元信息

时间:2010-11-14 22:23:47

标签: php postgresql

有没有办法在PHP的postgre结果中获取每列的表名?

想象一下,你有一个带连接的选择,例如:

$Q = <<<E2OD
    SELECT * FROM user U
    LEFT JOIN department D ON U.department_id = D.id
E2OD;

在PHP / FirebirdSQL中:

$R = ibase_query($Q);
$D = ibase_fetch_row($R);
$info = ibase_field_info($R, 0);

返回

Array
(
    [0] => id
    [name] => id
    [1] => id
    [alias] => id
    [2] => user
    [relation] => user
    [3] => 8
    [length] => 8
    [4] => BIGINT
    [type] => BIGINT
)

在PHP / PostgreSQL中:

$select = $DB->query($Q);
$meta = $select->getColumnMeta(0);

返回

Array
(
    [pgsql:oid] => 20
    [native_type] => int8
    [name] => id
    [len] => 8
    [precision] => -1
    [pdo_type] => 2
)

如您所见,没有关于该列所来自的表的信息。缺少显示表名的密钥[relation] => user或类似内容。

http://php.net/manual/en/pdostatement.getcolumnmeta.php

PHP可以通过PG或PDO库获取此信息吗? PostgreSQL是否将此信息提供给客户端库?要做到这一点需要做些什么?

感谢任何提示,

米甲

1 个答案:

答案 0 :(得分:1)

检查pg_field_table()