pg_field_type_oid

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

pg_field_type_oidLiefert die ID des PostgreSQL-Datentyps (OID) eines Feldes

Beschreibung

pg_field_type_oid(PgSql\Result $result, int $field): string|int

pg_field_type_oid() gibt einen Integer zurück, der die OID des Datentyps für das Feld mit der Nummer field in der PostgreSQL result-Instanz enthält.

Mehr Informationen über Feldtypen erhalten Sie, wenn Sie den PostgreSQL-Systemkatalog pg_type mit der OID, die von dieser Funktion zurückgegeben wird, abfragen. Die PostgreSQL-Funktion format_type() konvertiert diesen OID in einen Standard-SQL-Typnamen.

Hinweis:

Wenn das Feld anstatt eines Basis-Datentyps einen Typ einer PostgreSQL-Domain besitzt, wird der Name des Datentyps zurückgegeben, auf dem die Domain definiert ist und nicht der Name der Domain.

Parameter-Liste

result

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

field

Die Feldnummer, beginnend bei 0.

Rückgabewerte

Den OID (Object Identifier) des Basistyps dieses Feldes.

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 holen

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

// Angenommen 'title' ist vom Typ varchar
$res = pg_query($dbconn, "select title from authors where author = 'Orwell'");

echo
"Der OID des Feldes title ist: ", pg_field_type_oid($res, 0);
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

Der OID des Feldes title ist: 1043

Siehe auch

add a note add a note

User Contributed Notes 2 notes

up
0
stanislav dot perfilov at gmail dot com
3 years ago
<?php

private function mapping($q, $result)
    {
       
$types = [];
        for (
$i = 0, $count = \pg_num_fields($q); $i < $count; ++$i) {
           
$types[$i] = \pg_field_type_oid($q, $i);
        }
        foreach (
$result as $k => &$row) {
           
$i = -1;
            foreach (
$row as $name => &$value) {
                ++
$i;
                if (
$value === null) {
                    continue;
                }
                switch (
$types[$i]) {
                    case
20:
                    case
21:
                    case
23: $value = (int)$value; break;
                    case
16507: /*$value = (string)$value; */break;
                    default:
                        throw new \
RuntimeException(
                            \
pg_field_type($q, $i) .' type. Need mapping ' . \pg_field_type_oid($q, $i)
                        );
                }
            }
        }
        unset(
$value, $row);

        return
$result;
    }

?>
up
0
mauroi at digbang dot com
19 years ago
This function can be used to improve the performance of your application.
pg_field_type() makes an internal query to the pg_type table and it can be really slow.
So if your application previously know the oids of your database, you can save the execution time of this query in every request.
To Top