PHP Conference Japan 2024

pg_field_type

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_field_type 傳回對應欄位號的類型名稱

說明

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

pg_field_type() 傳回一個字串,其中包含給定 result 實例中給定 field 的基本類型名稱。

注意:

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

注意:

此函式以前稱為 pg_fieldtype()

參數

result

pg_query()pg_query_params()pg_execute()(以及其他函數)返回的 PgSql\Result 實例。

欄位

欄位編號,從 0 開始。

返回值

包含欄位類型基本名稱的 字串

更新日誌

版本 說明
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
"標題欄位類型:", pg_field_type($res, 0);
?>

上述範例將輸出

Title field type: varchar

另請參閱

新增註釋

使用者貢獻的註釋 4 則註釋

Joshua Burns
11 年前
這是一個更新的列表,包含幾乎所有 PostgreSQL 資料類型以及 PHP 的內部 C 類型等效項,已針對 PostgreSQL 9.2 更新。第一個陣列將 PHP 的內部資料類型映射到 PostgreSQL 的等效項。第二個陣列將 PostgreSQL 的資料類型映射到 PHP 的等效項。

<?php

$php_to_pg
= array(
'bit' => array('bit'),
'bool' => array('boolean'),
'box' => array('box'),
'bpchar' => array('character','char'),
'bytea' => array('bytea'),
'cidr' => array('cidr'),
'circle' => array('circle'),
'date' => array('date'),
'daterange' => array('daterange'),
'float4' => array('real'),
'float8' => array('double precision'),
'inet' => array('inet'),
'int2' => array('smallint', 'smallserial'),
'int4' => array('integer', 'serial'),
'int4range' => array('int4range'),
'int8' => array('bigint', 'bigserial'),
'int8range' => array('int8range'),
'interval' => array('interval'),
'json' => array('json'),
'lseg' => array('lseg'),
'macaddr' => array('macaddr'),
'money' => array('money'),
'numeric' => array('decimal', 'numeric'),
'numrange' => array('numrange'),
'path' => array('path'),
'point' => array('point'),
'polygon' => array('polygon'),
'text' => array('text'),
'time' => array('time', 'time without time zone'),
'timestamp' => array('timestamp', 'timestamp without time zone'),
'timestamptz' => array('timestamp with time zone'),
'timetz' => array('time with time zone'),
'tsquery' => array('tsquery'),
'tsrange' => array('tsrange'),
'tsvector' => array('tsvector'),
'uuid' => array('uuid'),
'varbit' => array('bit varying'),
'varchar' => array('character varying', 'varchar'),
'xml' => array('xml'),
);

$pg_to_php = array(
'bit' => 'bit',
'boolean' => 'bool',
'box' => 'box',
'character' => 'bpchar',
'char' => 'bpchar',
'bytea' => 'bytea',
'cidr' => 'cidr',
'circle' => 'circle',
'date' => 'date',
'daterange' => 'daterange',
'real' => 'float4',
'double precision' => 'float8',
'inet' => 'inet',
'smallint' => 'int2',
'smallserial' => 'int2',
'integer' => 'int4',
'serial' => 'int4',
'int4range' => 'int4range',
'bigint' => 'int8',
'bigserial' => 'int8',
'int8range' => 'int8range',
'interval' => 'interval',
'json' => 'json',
'lseg' => 'lseg',
'macaddr' => 'macaddr',
'money' => 'money',
'decimal' => 'numeric',
'numeric' => 'numeric',
'numrange' => 'numrange',
'path' => 'path',
'point' => 'point',
'polygon' => 'polygon',
'text' => 'text',
'time' => 'time',
'time without time zone' => 'time',
'timestamp' => 'timestamp',
'timestamp without time zone' => 'timestamp',
'timestamp with time zone' => 'timestamptz',
'time with time zone' => 'timetz',
'tsquery' => 'tsquery',
'tsrange' => 'tsrange',
'tstzrange' => 'tstzrange',
'tsvector' => 'tsvector',
'uuid' => 'uuid',
'bit varying' => 'varbit',
'character varying' => 'varchar',
'varchar' => 'varchar',
'xml' => 'xml'
);

?>
匿名
14 年前
另請注意,PostgreSQL 陣列欄位將在類型名稱前加上底線(例如 "_int4" 或 "_text"),而複合式(又稱列類型)欄位將返回類型 "record"。
andy at a 2 h d dot com
21 年前
返回的類型為
bool
int2 (smallint)
int4
int8 (bigint)
numeric
float4 (real / float)
float8 (double)
timestamp
date
time
varchar(可變長度字元)
bpchar(固定長度字串,'blank padded char',空白填充字元)
inet(IP 位址)
money(貨幣)

還有一些其他較少見的類型,例如 'circle',但以上是最常見的。
marxarelli
18 年前
為了提供更完整的說明,以下列出 PostgreSQL 8.1 文件中所有通用類型,以及 pg_field_type() 返回的對應字串。

bigint => int8
bigserial => int8
bit => bit
bit varying => varbit(可變長度位元)
boolean => bool(布林值)
box => box(盒狀)
bytea => bytea(位元組陣列)
character varying => varchar
character => bpchar
cidr => cidr(無類別域間路由)
circle => circle(圓形)
date => date(日期)
double precision => float8(雙精度浮點數)
inet => inet
integer => int4(整數)
interval => interval(時間間隔)
line => line(線段)
lseg => lseg(線段)
macaddr => macaddr(MAC 位址)
money => money
numeric => numeric(數值)
path => path(路徑)
point => point(點)
polygon => polygon(多邊形)
real => float4(單精度浮點數)
smallint => int2(小整數)
serial => int4
text => text(文字)
time => time(時間)
time with time zone => timetz(含時區的時間)
timestamp => timestamp(時間戳記)
timestamp with time zone => timestamptz(含時區的時間戳記)

備註...(請注意 7.4 客戶端函式庫)
# postmaster --version
postmaster (PostgreSQL) 8.0.4

# ldd libphp4.so
...
libpq.so.3 => /usr/lib/libpq.so.3 (0xb7ac8000)
...
To Top