PHP 8.3.4 Released!

pg_field_table

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

pg_field_tableRetourne le nom ou l'oid d'une table

Description

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

pg_field_table() retourne le nom de la table à laquelle le champ appartient ou l'oid de la table si le paramètre oid_only vaut true.

Liste de paramètres

result

Une instance PgSql\Result, retourné par pg_query(), pg_query_params(), ou pg_execute() (entre autres).

field

Numéro du champ, commençant à 0.

oid_only

Par défaut, le nom de la table à laquelle le champ appartient est retourné mais si le paramètre oid_only est défini à true, alors, ce sera l'oid qui sera retourné.

Valeurs de retour

En cas de succès, le nom de la table ou l'oid, ou false si une erreur survient.

Historique

Version Description
8.1.0 Le paramètre result attend désormais une instance de PgSql\Result ; auparavant, une ressource était attendu.

Exemples

Exemple #1 Récupération des informations d'une table à partir d'un champ

<?php
$dbconn
= pg_connect("dbname=publisher") or die("Connexion impossible");

$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));
?>

Résultat de l'exemple ci-dessus est similaire à :

foo
14379580

bool(false)

Notes

Note:

Retourner l'oid est plus rapide que de retourner le nom de la table, car la récupération du nom de la table nécessite une requête sur la table système de la base de données.

Voir aussi

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