PHPCon Poland 2024

pg_field_type_oid

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

pg_field_type_oid Возвращает идентификатор типа заданного поля

Описание

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

pg_field_type_oid() возвращает целочисленный идентификатор базового типа (OID) значений колонки результата запроса result с номером field.

Более подробную информацию о типе значений можно получить, отправив запрос с полученным OID к системной таблице PostgreSQL pg_type. Функция PostgreSQL format_type() преобразовывает OID в стандартное имя типа SQL.

Замечание:

Если в качестве типа значений используется PostgreSQL домен (вместо базового типа), функция вернёт OID типа внутри домена, а не OID самого домена.

Список параметров

result

Экземпляр класса PgSql\Result, который возвращают функции pg_query(), pg_query_params() или pg_execute() (среди прочего).

field

Порядковый номер поля, начиная с нуля.

Возвращаемые значения

Возвращает OID базового типа значений поля.

Список изменений

Версия Описание
8.1.0 Параметр result теперь ожидает экземпляр класса PgSql\Result; раньше параметр ждал ресурс (resource).

Примеры

Пример #1 Получение информации о полях выборки

<?php
$dbconn
= pg_connect("dbname=publisher") or die("Невозможно соединиться с базой");

// Допустим, 'title' имеет тип varchar
$res = pg_query($dbconn, "select title from authors where author = 'Orwell'");

echo
"Title field type OID: ", pg_field_type_oid($res, 0);
?>

Результат выполнения приведённого примера:

Title field type OID: 1043

Смотрите также

  • pg_field_type() - Возвращает имя типа заданного поля
  • pg_field_prtlen() - Возвращает количество печатаемых символов
  • pg_field_name() - Возвращает наименование поля

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