(PHP 5 >= 5.2.0, PHP 7, PHP 8)
pg_field_table — Devuelve el nombre o el oid de una tabla
$result, int $field, bool $oid_only = false ): string |int |false
pg_field_table() devuelve el nombre de la tabla a la que
pertenece el campo o el oid de la tabla si el parámetro
oid_only vale true .
resultUna instancia PgSql\Result , devuelta por pg_query() , pg_query_params() , o pg_execute() (entre otros).
fieldNúmero del campo, comenzando en 0.
oid_only
Por omisión, se devuelve el nombre de la tabla a la que pertenece el campo, pero
si el parámetro oid_only se define como true , entonces,
se devolverá el oid.
En caso de éxito, el nombre de la tabla o el oid, o false si ocurre un error.
| Versión | Descripción |
|---|---|
| 8.1.0 |
El parámetro result ahora espera una instancia de PgSql\Result
; anteriormente, se esperaba un resource .
|
Ejemplo #1 Recuperación de información de una tabla a partir de un campo
<?php
$dbconn = pg_connect("dbname=publisher") or die("Conexión imposible");
$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));
?>Resultado del ejemplo anterior es similar a:
foo 14379580 bool(false)
Nota:
Devolver el oid es más rápido que devolver el nombre de la tabla, ya que la recuperación del nombre de la tabla requiere una consulta a la tabla del sistema de la base de datos.
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