pg_field_table

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

pg_field_tableReturns the name or oid of the tables field

Descrição

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.

Parâmetros

result

Uma instância de PgSql\Result, retornada por pg_query(), pg_query_params() ou pg_execute() (entre outras).

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.

Valor Retornado

On success either the fields table name or oid, ou false em caso de falha.

Registro de Alterações

Versão Descrição
8.1.0 O parâmetro result agora espera uma instância de PgSql\Result; anteriormente, um resource era esperado.

Exemplos

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

O exemplo acima produzirá algo semelhante a:

foo
14379580

bool(false)

Notas

Nota:

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

Veja Também

add a note 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