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

一个 PgSql\Result 实例,由 pg_query()pg_query_params()pg_execute()(等等)返回。

field

字段编号,从 0 开始。

返回值

一个 string,包含字段类型的基本名称。

更新日志

版本 说明
8.1.0 result 参数现在需要一个 PgSql\Result 实例;之前需要的是一个 资源(resource)

示例

示例 #1 获取有关字段的信息

<?php
$dbconn
= pg_connect("dbname=publisher") or die("Could not connect");

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

echo
"Title field type: ", pg_field_type($res, 0);
?>

以上示例的输出

Title field type: varchar

参见

添加注释

用户贡献的注释 4 条

up
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'
);

?>
up
0
匿名用户
14 年前
还要注意的是,PostgreSQL 数组字段会在类型名称前加上下划线(例如 "_int4" 或 "_text"),而复合(又称行类型)字段将返回类型 "record"。
up
-1
andy 在 a 2 h d 点 com
21 年前
返回的类型有
bool
int2 (smallint)
int4
int8 (bigint)
numeric
float4 (real / float)
float8 (double)
timestamp
date
time
varchar
bpchar (固定长度字符串,'空白填充字符')
inet (ip 地址)
money

还有一些其他更深奥的类型,例如 'circle',但这些是最常见的。
up
-2
marxarelli
18 年前
因为完整的文档总是有帮助的,这里列出了 8.1 文档中列出的所有 PostgreSQL 通用类型,以及 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
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