CascadiaPHP 2024

pg_field_type_oid

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

pg_field_type_oid Retorna o ID do tipo (OID) para o número do campo correspondente

Descrição

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

pg_field_type_oid() retorna um número inteiro contendo o OID do tipo base do field fornecido na instância de result fornecida.

Você pode obter mais informações sobre o tipo de campo consultando a tabela de sistema pg_type do PostgreSQL usando o OID obtido com esta função. A função format_type() do PostgreSQL converterá um tipo OID em um nome de tipo padrão SQL.

Nota:

Se o campo usar um domínio PostgreSQL (em vez de um tipo básico), será retornado o OID do tipo subjacente do domínio, e não o OID do próprio domínio.

Parâmetros

result

Uma instância de PgSql\Result, retornada por pg_query(), pg_query_params() ou pg_execute() (entre outras).

field

Número do campo, começando em 0.

Valor Retornado

O OID do tipo base do campo.

Registro de Alterações

Versão Descrição
8.1.0 O parâmetro result agora espera uma instância de PgSql\Result; anteriormente, um resource era esperado.

Exemplos

Exemplo #1 Obtendo informações sobre campos

<?php
$dbconn
= pg_connect("dbname=publisher") or die("Não foi possível conectar");

// Suponha que 'title' seja um tipo varchar
$res = pg_query($dbconn, "select title from authors where author = 'Orwell'");

echo
"Campo title de tipo OID: ", pg_field_type_oid($res, 0);
?>

O exemplo acima produzirá:

Campo title de tipo OID: 1043

Veja Também

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