文字

pg_field_table

(PHP 5 >= 5.2.0)

pg_field_tableReturns the name or oid of the tables field

说明

mixed pg_field_table ( resource $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.

参见

  • pg_field_name() - 返回字段的名字
  • pg_field_type() - 返回相应字段的类型名称

用户评论:

[#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($res0); // Outputs 'table1'
echo pg_field_table($res1); // 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($res0); // FALSE
echo pg_field_table($res1); // 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($res0); // FALSE
echo pg_field_table($res1); // FALSE
?>

上一篇: 下一篇: