pg_field_table is primarily useful for queries that involve joins between multiple tables, e.g:
<?php
$res = pg_query("SELECT table1.foo, table2.bar FROM table1 JOIN table2");
echo pg_field_table($res, 0); // Outputs 'table1'
echo pg_field_table($res, 1); // Outputs 'table2'
?>
However, be aware of a few easy 'gotchas':
1- If your query contains static values in its select-list, pg_field_table() will yield FALSE for those fields (because it was a static value, not one fetched from a table):
<?php
$res = pg_query("SELECT 'foo', bar FROM table");
echo pg_field_table($res, 0); // FALSE
echo pg_field_table($res, 1); // Outputs 'table'
?>
2- If you UNION two queries together from different tables, pg_field_table() will return FALSE for all fields:
<?php
$res = pg_query("(Select foo, bar from table1) UNION (Select foo, bar from table2)");
echo pg_field_table($res, 0); // FALSE
echo pg_field_table($res, 1); // FALSE
?>
pg_field_table
(PHP 5 >= 5.2.0)
pg_field_table — tables フィールドの名前あるいは oid を返す
説明
pg_field_table() は、フィールドが属するテーブルの名前か あるいは oid_only が TRUE の場合にテーブルの oid を返します。
パラメータ
- result
-
pg_query()、pg_query_params() あるいは pg_execute() (その他も含む) から返された、PostgreSQL クエリ結果リソース。
- field_number
-
0 から始まるフィールド番号。
- oid_only
-
デフォルトでは、フィールドが属するテーブルの名前が返されます。 しかし oid_only をTRUE に設定すると、 その代わりに oid が返されます。
返り値
成功した場合にフィールドのテーブル名あるいは oid、 あるいは失敗した場合に FALSE を返します。
例
例1 フィールドについてのテーブル情報の取得
<?php
$dbconn = pg_connect("dbname=publisher") or die("接続できません");
$res = pg_query($dbconn, "SELECT bar FROM foo");
echo pg_field_table($res, 0);
echo pg_field_table($res, 0, true);
$res = pg_query($dbconn, "SELECT version()");
var_dump(pg_field_table($res, 0));
?>
上の例の出力は、 たとえば以下のようになります。
foo 14379580 bool(false)
注意
注意: テーブル名を返すよりも oid を返すほうがずっと高速です。 なぜなら、テーブル名を取得するには、 データベースのシステムテーブルにクエリを発行しなければならないからです。
pg_field_table
strata_ranger at hotmail dot com
16-May-2009 03:11
16-May-2009 03:11
