pg_field_type_oid
(PHP 5 >= 5.1.0, PHP 7)
pg_field_type_oid — Возвращает идентификатор типа заданного поля
Описание
$result
, int $field_number
)
pg_field_type_oid() возвращает целочисленный идентификатор
базового типа (OID) значений колонки результата запроса result
с номером
field_number
.
Более подробную информацию о типе значений можно получить, отправив запрос с полученным OID к системной таблице PostgreSQL pg_type. Функция PostgreSQL format_type() преобразует OID в стандартное имя типа SQL.
Замечание:
Если в качестве типа значений используется PostgreSQL домен (вместо базового типа), функция вернет OID типа внутри домена, а не OID самого домена.
Список параметров
-
result
-
Ресурс результата запроса PostgreSQL, возвращаемый функциями pg_query(), pg_query_params() или pg_execute() (в числе прочих).
-
field_number
-
Порядковый номер поля, начиная с нуля.
Возвращаемые значения
OID базового типа значений поля, либо FALSE
в случае ошибки.
Примеры
Пример #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() - Возвращает наименование поля
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Расширения для работы с базами данных
- Расширения для работы с базами данных отдельных производителей
- PostgreSQL
- pg_affected_rows
- pg_cancel_query
- pg_client_encoding
- pg_close
- pg_connect_poll
- pg_connect
- pg_connection_busy
- pg_connection_reset
- pg_connection_status
- pg_consume_input
- pg_convert
- pg_copy_from
- pg_copy_to
- pg_dbname
- pg_delete
- pg_end_copy
- pg_escape_bytea
- pg_escape_identifier
- pg_escape_literal
- pg_escape_string
- pg_execute
- pg_fetch_all_columns
- pg_fetch_all
- pg_fetch_array
- pg_fetch_assoc
- pg_fetch_object
- pg_fetch_result
- pg_fetch_row
- pg_field_is_null
- pg_field_name
- pg_field_num
- pg_field_prtlen
- pg_field_size
- pg_field_table
- pg_field_type_oid
- pg_field_type
- pg_flush
- pg_free_result
- pg_get_notify
- pg_get_pid
- pg_get_result
- pg_host
- pg_insert
- pg_last_error
- pg_last_notice
- pg_last_oid
- pg_lo_close
- pg_lo_create
- pg_lo_export
- pg_lo_import
- pg_lo_open
- pg_lo_read_all
- pg_lo_read
- pg_lo_seek
- pg_lo_tell
- pg_lo_truncate
- pg_lo_unlink
- pg_lo_write
- pg_meta_data
- pg_num_fields
- pg_num_rows
- pg_options
- pg_parameter_status
- pg_pconnect
- pg_ping
- pg_port
- pg_prepare
- pg_put_line
- pg_query_params
- pg_query
- pg_result_error_field
- pg_result_error
- pg_result_seek
- pg_result_status
- pg_select
- pg_send_execute
- pg_send_prepare
- pg_send_query_params
- pg_send_query
- pg_set_client_encoding
- pg_set_error_verbosity
- pg_socket
- pg_trace
- pg_transaction_status
- pg_tty
- pg_unescape_bytea
- pg_untrace
- pg_update
- pg_version
Коментарии
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.
<?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;
}
?>