PHP Conference Nagoya 2025

pg_field_table

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

pg_field_tableReturns the name or oid of the tables field

Description

pg_field_table(PgSql\Result $result, int $field, bool $oid_only = false): string|int|false

pg_field_table() returns the name of the table that field belongs to, or the table's oid if oid_only is true.

Parameters

result

An PgSql\Result instance, returned by pg_query(), pg_query_params() or pg_execute()(among others).

field

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.

Return Values

On success either the fields table name or oid, or false on failure.

Changelog

Version Description
8.1.0 The result parameter expects an PgSql\Result instance now; previously, a resource was expected.

Examples

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));
?>

The above example will output something similar to:

foo
14379580

bool(false)

Notes

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.

See Also

add a note

User Contributed Notes 2 notes

up
3
strata_ranger at hotmail dot com
15 years ago
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
?>
up
1
giultar at gmail dot com
4 years ago
this function return an OID even if your field comes from a view or a select but return FALSE if your field comes from an UNION select
To Top