pg_field_table

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

pg_field_tableRetorna o nome ou oid do campo da tabela

Descrição

pg_field_table(PgSql\Result $result, int $field, bool $oid_only = false): string|int|false

pg_field_table() retorna o nome da tabela à qual o campo pertence, ou o oid da tabela se oid_only for true.

Parâmetros

result

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

field

Número do campo, começando em 0.

oid_only

Por padrão, o nome da tabela à qual o campo pertence é retornado, mas se oid_only estiver definido como true, então o oid será retornado.

Valor Retornado

Em caso de sucesso, o nome da tabela de campos ou 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 Obtendo informações da tabela sobre um campo

<?php
$dbconn
= pg_connect("dbname=publisher") or die("Não foi possível conectar");

$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:

Retornar o oid é muito mais rápido do que retornar o nome da tabela porque buscar o nome da tabela requer uma consulta à tabela do sistema do banco de dados.

Veja Também

add a note

User Contributed Notes 2 notes

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