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

$res = pg_query($dbconn, "select * from authors where author = 'Orwell'");
$i = pg_num_fields($res);
for (
$j = 0; $j < $i; $j++) {
echo
"column $j\n";
$fieldname = pg_field_name($res, $j);
echo
"fieldname: $fieldname\n";
echo
"printed length: " . pg_field_prtlen($res, $fieldname) . " characters\n";
echo
"storage length: " . pg_field_size($res, $j) . " bytes\n";
echo
"field type: " . 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 notes

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)
0
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