Dutch PHP Conference 2025 - Call For Papers

pg_field_name

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

pg_field_nameReturns the name of a field

Опис

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

pg_field_name() returns the name of the field occupying the given field in the given result instance. Field numbering starts from 0.

Зауваження:

This function used to be called pg_fieldname().

Параметри

result

Примірник PgSql\Result, якого повертає одна з функцій pg_query(), pg_query_params() або pg_execute() (серед інших).

field

Field number, starting from 0.

Значення, що повертаються

The field name.

Журнал змін

Версія Опис
8.1.0 Тепер параметр result має бути примірником PgSql\Result. Раніше очікувався resource.

Приклади

Приклад #1 Getting information about fields

<?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

Прогляньте також

add a note

User Contributed Notes 2 notes

up
2
Anonymous
20 years ago
In fact you can extract the size of the varchar field, by simply sending the following query:
"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'"

here is a simple function that does that:

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

}

returned value is a size of a given field (also varchar)
up
0
ccasal at compuserve dot com
23 years ago
The pg_fieldname function only returns the unqualified name from the select statement. example:

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

pg_fieldname will return "name" for both fields instead of c.name and con.name.

This is a PostgreSQL limitation, not a PHP limitation.

if you need different field names you should use :

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

then pg_fieldname will return "customer_name" and "contact_name"
To Top