pg_field_table
(PHP 5 >= 5.2.0, PHP 7, PHP 8)
pg_field_table — Returns the name or oid of the tables field
说明
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 totrue
, 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.

User Contributed Notes 2 notes
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
?>
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
备份地址:http://www.lvesu.com/blog/php/function.pg-field-table.php