pg_field_table

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

pg_field_tableGibt zu einem Feldnamen den Namen der Tabelle oder deren oid zurück, in der das Feld definiert ist

Beschreibung

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

pg_field_table() gibt den Namen der Tabelle zurück, in der das Feld definiert ist, oder den oid (Object Identifier) der Tabelle, falls der Parameter oid_only true ist.

Parameter-Liste

result

Eine PgSql\Result-Instanz, die von pg_query(), pg_query_params() oder pg_execute() (unter anderen) zurückgegeben wurde.

field

Index des Feldes, beginnend bei 0.

oid_only

In der Standardeinstellung wird der Name der Tabelle zurückgegeben, zu der dieses Feld gehört. Wenn der Parameter oid_only den Wert true hat, wird stattdessen der oid der Tabelle zurückgegeben.

Rückgabewerte

Bei Erfolg wird entweder der Name oder der oid der Tabelle zurückgegeben. Bei einem Fehler wird false zurückgegeben.

Changelog

Version Beschreibung
8.1.0 Der Parameter result erwartet nun eine PgSql\Result-Instanz; vorher wurde eine Ressource erwartet.

Beispiele

Beispiel #1 Informationen über Felder abfragen

<?php
$dbconn
= pg_connect("dbname=publisher")
or die(
"Konnte keine Verbindung aufbauen.");

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

Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:

foo
14379580

bool(false)

Anmerkungen

Hinweis:

Die Funktion ist viel schneller, wenn man sich den oid zurückgeben lässt, weil zur Ermittlung des Tabellennamens die Systemkataloge der Datenbank abgefragt werden müssen.

Siehe auch

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