PHP 日本研討會 2024

pg_field_type_oid

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

pg_field_type_oid 傳回對應欄位編號的型別 ID(OID)

描述

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

pg_field_type_oid() 會傳回一個整數,其中包含給定 result 執行個體中給定 field 的基本型別 OID。

您可以使用此函式取得的 OID 來查詢 PostgreSQL 的 pg_type 系統表格,以取得更多關於欄位型別的資訊。PostgreSQL 的 format_type() 函式會將型別 OID 轉換為 SQL 標準型別名稱。

注意:

如果欄位使用 PostgreSQL 網域(而不是基本型別),則會傳回網域底層型別的 OID,而不是網域本身的 OID。

參數

result

一個 PgSql\Result 執行個體,由 pg_query()pg_query_params()pg_execute()(以及其他函式)傳回。

field

欄位編號,從 0 開始。

傳回值

欄位基本型別的 OID。

變更日誌

版本 描述
8.1.0 result 參數現在需要一個 PgSql\Result 執行個體;先前,需要一個 資源

範例

範例 1 取得關於欄位的資訊

<?php
$dbconn
= pg_connect("dbname=publisher") or die("無法連線");

// 假設 'title' 是 varchar 型別
$res = pg_query($dbconn, "select title from authors where author = 'Orwell'");

echo
"Title 欄位型別 OID: ", pg_field_type_oid($res, 0);
?>

上面的範例將會輸出

Title field type OID: 1043

請參閱

新增註解

使用者貢獻的註解 2 則註解

0
stanislav dot perfilov at gmail dot com
3 年前
<?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;
}

?>
0
mauroi at digbang dot com
19 年前
此函式可用於改善應用程式的效能。
pg_field_type() 會對 pg_type 表格進行內部查詢,而且可能會非常慢。
因此,如果您的應用程式先前知道資料庫的 oids,您可以節省每次請求執行此查詢的時間。
To Top