pg_field_type_oid
(PHP 5 >= 5.1.0)
pg_field_type_oid — Returns the type ID (OID) for the corresponding field number
Description
$result
, int $field_number
)
pg_field_type_oid() returns an integer containing the
OID of the base type of the given field_number
in the
given PostgreSQL result
resource.
You can get more information about the field type by querying PostgreSQL's pg_type system table using the OID obtained with this function. The PostgreSQL format_type() function will convert a type OID into an SQL standard type name.
Note:
If the field uses a PostgreSQL domain (rather than a basic type), it is the OID of the domain's underlying type that is returned, rather than the OID of the domain itself.
Parameters
-
result
-
PostgreSQL query result resource, returned by pg_query(), pg_query_params() or pg_execute() (among others).
-
field_number
-
Field number, starting from 0.
Return Values
The OID of the field's base type. FALSE
is returned on error.
Examples
Example #1 Getting information about fields
<?php
$dbconn = pg_connect("dbname=publisher") or die("Could not connect");
// Assume 'title' is a varchar type
$res = pg_query($dbconn, "select title from authors where author = 'Orwell'");
echo "Title field type OID: ", pg_field_type_oid($res, 0);
?>
The above example will output:
Title field type OID: 1043
See Also
- pg_field_type() - Returns the type name for the corresponding field number
- pg_field_prtlen() - Returns the printed length
- pg_field_name() - Returns the name of a field
- 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;
}
?>