CakeFest 2024: The Official CakePHP Conference

pg_field_type_oid

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

pg_field_type_oid Returns the type ID (OID) for the corresponding field number

Açıklama

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

pg_field_type_oid() returns an integer containing the OID of the base type of the given field in the given result instance.

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.

Bilginize:

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.

Bağımsız Değişkenler

result

pg_query(), pg_query_params() veya pg_execute() işlevinden dönen PgSql\Result nesnesi.

field

Field number, starting from 0.

Dönen Değerler

The OID of the field's base type.

Sürüm Bilgisi

Sürüm: Açıklama
8.1.0 sonuç bağımsız değişkeni artık PgSql\Result nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

Örnekler

Örnek 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);
?>

Yukarıdaki örneğin çıktısı:

Title field type OID: 1043

Ayrıca Bakınız

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