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 实例;以前,期望的是一个 资源

示例

示例 #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 个注释

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

?>
Anonymous
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(固定长度字符串,“空白填充字符”)
inet(IP 地址)
money

还有一些其他更深奥的类型,例如“circle”,但这些是最常见的。
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