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

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.

返回值

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

更新日志

版本 说明
8.1.0 The result parameter expects an PgSql\Result instance now; previously, a 资源(resource) was expected.

范例

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($res0);
echo 
pg_field_table($res0true);

$res pg_query($dbconn"SELECT version()");
var_dump(pg_field_table($res0));
?>

以上例程的输出类似于:

foo
14379580

bool(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.

参见

User Contributed Notes

giultar at gmail dot com 02-Jun-2020 08:52
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
strata_ranger at hotmail dot com 15-May-2009 11:11
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
?>
PHP8中文手册 站长在线 整理 版权归PHP文档组所有