文字

pg_field_name

(PHP 4 >= 4.2.0, PHP 5)

pg_field_name返回字段的名字

说明

string pg_field_name ( resource $result , int $field_number )

pg_field_name() 返回给定 PostgreSQL result 资源中的 field_number 所代表的字段名。字段编号从 0 开始。

Example #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: varcharcolumn 1
fieldname: year
printed length: 4 characters
storage length: 2 bytes
field type: int2column 2
fieldname: title
printed length: 24 characters
storage length: -1 bytes
field type: varchar

Note:

本函数以前的名字为 pg_fieldname()

参见 pg_field_num()

用户评论:

[#1] [2004-08-12 10:01:21]

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)

[#2] ccasal at compuserve dot com [2001-01-12 11:51:42]

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"

上一篇: 下一篇: