2024 年 PHP 开发者大会 (日本)

pg_field_name

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

pg_field_name返回字段名称

描述

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

pg_field_name() 返回给定 result 实例中,位于给定 field 位置的字段名称。字段编号从 0 开始。

注意:

此函数以前称为 pg_fieldname()

参数

result

一个 PgSql\Result 实例,由 pg_query()pg_query_params()pg_execute()(以及其他函数)返回。

field

字段编号,从 0 开始。

返回值

字段名称。

变更日志

版本 描述
8.1.0 result 参数现在需要一个 PgSql\Result 实例;以前需要一个 资源

范例

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

<?php
$dbconn
= pg_connect("dbname=publisher") or die("无法连接");

$res = pg_query($dbconn, "select * from authors where author = 'Orwell'");
$i = pg_num_fields($res);
for (
$j = 0; $j < $i; $j++) {
echo
"列 $j\n";
$fieldname = pg_field_name($res, $j);
echo
"字段名: $fieldname\n";
echo
"打印长度: " . pg_field_prtlen($res, $fieldname) . " 个字符\n";
echo
"存储长度: " . pg_field_size($res, $j) . " 字节\n";
echo
"字段类型: " . pg_field_type($res, $j) . " \n\n";
}
?>

以上示例将输出

column 0
fieldname: author
printed length: 6 characters
storage length: -1 bytes
field type: varchar 

column 1
fieldname: year
printed length: 4 characters
storage length: 2 bytes
field type: int2 

column 2
fieldname: title
printed length: 24 characters
storage length: -1 bytes
field type: varchar

参见

添加注释

用户贡献的注释 2 条注释

匿名
20 年前
事实上,您可以通过发送以下查询来提取 varchar 字段的大小:
"select a.atttypmod,a.attrelid from pg_attribute as a, pg_class as c where c.relname='$table' AND a.attrelid=c.oid AND a.attname='$field'"

这是一个简单的执行此操作的函数:

function get_field_size($table, $field, $link) {

$result = pg_query($link, "select a.atttypmod,a.attrelid from pg_attribute as a, pg_class as c where c.relname='$table' AND a.attrelid=c.oid AND a.attname='$field'");

$data = pg_fetch_object($result);

return ($data->atttypmod - 4);

}

返回值是给定字段(也包括 varchar)的大小。
ccasal at compuserve dot com
23 年前
pg_fieldname 函数只返回 select 语句中的非限定名称。例如:

select c.name, con.name from customer c, contacts con where con.customer_id = c.id;

pg_fieldname 将对两个字段都返回 "name",而不是 c.name 和 con.name。

这是 PostgreSQL 的限制,而不是 PHP 的限制。

如果您需要不同的字段名称,您应该使用:

select c.name as customer_name, con.name as contact_name from customer c, contacts con where con.customer_id = c.id;

然后 pg_fieldname 将返回 "customer_name" 和 "contact_name"
To Top