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("Could not connect");

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

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

上面的示例将输出

Title field type OID: 1043

参见

添加备注

用户贡献的备注 2 个备注

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;
}

?>
mauroi at digbang dot com
19 年前
此函数可用于提高应用程序的性能。
pg_field_type() 对 pg_type 表进行内部查询,这可能非常慢。
因此,如果您的应用程序事先知道数据库的 OID,您可以在每个请求中节省此查询的执行时间。
To Top