PHP 8.3.0 RC 6 available for testing

pg_field_table

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

pg_field_tableReturns the name or oid of the tables field

说明

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.

参数

result

PgSql\Result 实例,由 pg_query()pg_query_params() 或者 pg_execute()(等)返回。

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.

返回值

On success either the fields table name or oid, 或者在失败时返回 false.

更新日志

版本 说明
8.1.0 现在 result 参数接受 PgSql\Result 实例,之前接受 resource

示例

示例 #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
14379580

bool(false)

注释

注意:

Returning the oid is much faster than returning the table name because fetching the table name requires a query to the database system table.

参见

add a note

User Contributed Notes 2 notes

up
3
strata_ranger at hotmail dot com
14 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
3 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