©
This document uses PHP Chinese website manual Release
(PHP 5 >= 5.2.0)
pg_field_table — Returns the name or oid of the tables field
$result
, int $field_number
[, bool $oid_only
= false
] ) pg_field_table() returns the name of the table that field
belongs to, or the table's oid if oid_only
is TRUE
.
result
PostgreSQL query result resource, returned by pg_query() , pg_query_params() or pg_execute() (among others).
field_number
Field number, starting from 0.
oid_only
By default the tables name that field belongs to is returned but
if oid_only
is set to TRUE
, then the
oid will instead be returned.
On success either the fields table name or oid. Or, FALSE
on failure.
Example #1 Getting table information about a field
<?php
$dbconn = pg_connect ( "dbname=publisher" ) or die( "Could not connect" );
$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 14379580bool(false)
Note:
Returning the oid is much faster than returning the table name because fetching the table name requires a query to the database system table.
[#1] strata_ranger at hotmail dot com [2009-05-15 23:11:47]
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
?>