2010-11-14 46 views
0

是否有一種方法可以在PHP中爲postgre結果中的每個列獲取表名稱?使用PHP獲取PostgreSQL中選定列的元信息

假設你有一個選擇與加入,例如:

$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

檢查pg_field_table()

+0

謝謝弗蘭克。我搜索了手冊,但找不到它。原來,我的本地.chm幫助文件幾乎是最新的,但...有點過時:) – dwich 2010-11-15 22:13:16