• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • pg_field_name()

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

    返回字段的名字

    说明

    pg_field_name(resource $result,int $field_number): string

    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: 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
    
    Note:

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

    参见pg_field_num()。

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