ConFoo: Call for paper is now Open

pg_field_table

(PHP 5 >= 5.2.0)

pg_field_tableRetourne le nom ou l'oid d'une table

Description

mixed pg_field_table ( resource $result , int $field_number [, bool $oid_only = 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

Ressource du résultat d'une requête PostgreSQL, retournée par la fonction pg_query(), pg_query_params() ou pg_execute() (et d'autres).

field_number

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, FALSE en cas d'échec.

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($res0);
echo 
pg_field_table($res0true);

$res pg_query($dbconn"SELECT version()");
var_dump(pg_field_table($res0));
?>

L'exemple ci-dessus va afficher quelque chose de 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 add a note

User Contributed Notes 1 note

up
0
strata_ranger at hotmail dot com
5 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
?>
To Top