(PHP 4 >= 4.2.0, PHP 5)
pg_field_size — Gibt den belegten Speicher für ein Feld zurück
pg_field_size() gibt die interne Größe (in Bytes) des Feldes mit der Nummer field_number im PostgreSQL Abfrageergebnis result zurück.
Hinweis:
Diese Funktion ersetzt die Funktion pg_fieldsize().
PostgreSQL Verbindungskennung, die (unter anderem) von den Funktionen pg_query(), pg_query_params() oder pg_execute() zurückgegeben wurde.
Die Feldnummer, beginnend bei 0.
Die interne Größe des Feldes in Byte. Eine Feldgröße von -1 beschreibt ein Feld mit variabler Länge. Bei einem Fehler wird FALSE zurückgegeben.
Beispiel #1 Informationen über Felder abfragen
<?php
  $dbconn = pg_connect("dbname=publisher") or die
           ("Konnte keine Verbindung aufbauen.");
  $res = pg_query($dbconn, "select * from authors where author = 'Orwell'");
  $i = pg_num_fields($res);
  for ($j = 0; $j < $i; $j++) {
      echo "Spalte $j\n";
      $fieldname = pg_field_name($res, $j);
      echo "Feldname: $fieldname\n";
      echo "Feldlänge in Zeichen: " . pg_field_prtlen($res, $fieldname) . " Zeichen\n";
      echo "Feldlänge in Bytes: " . pg_field_size($res, $j) . " Bytes\n";
      echo "Feldtyp: " . pg_field_type($res, $j) . " \n\n";
  }
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
Spalte 0 Feldname: author Feldlänge in Zeichen: 6 Zeichen Feldlänge in Bytes: -1 Bytes Feldtyp: varchar Spalte 1 Feldname: year Feldlänge in Zeichen: 4 Zeichen Feldlänge in Bytes: 2 Bytes Feldtyp: int2 Spalte 2 Feldname: title Feldlänge in Zeichen: 24 Zeichen Feldlänge in Bytesr: -1 Bytes Feldtyp: varchar
To view the file structure of a table using a sql query
select pg_class.relname, pg_attribute.attname, pg_type.typname, pg_type.typlen from pg_class, pg_attribute, pg_type  where pg_class.relname = 'YOURTABLENAME' and pg_class.oid = pg_attribute.attrelid and pg_type.oid = pg_attribute.atttypid having attnum > 0
function get_create_syntax( $table )
{
  $qry  =  "
            SELECT    *
            FROM      $table
            LIMIT     1
          ";
  $res = pg_query( $qry );
  $row = pg_fetch_assoc( $res );
  $create = "CREATE TABLE $table \n(\n";
  $item = array();
  for( $i = 0; $i < count( $row ); $i++ )
  {
    $name = pg_field_name( $res, $i );
    $type = pg_field_type( $res, $i );
    $size = pg_field_size( $res, $i );
    $item[$i] = '"'.$name.'" '.$type;
    $qry  =  "
              SELECT    a.atttypmod    AS size,
                        a.attnotnull  AS notnull
              FROM      pg_attribute  AS a,
                        pg_class      AS c
              WHERE     c.relname   = '$table'
              AND       a.attrelid  =  c.oid
              AND       a.attname    =  '$name'
             ";
    $res2  = pg_query( $qry );
    $out  = pg_fetch_object( $res2 );
    if( $out -> size != -1 )
    {
      $item[$i] .= '('.( $out -> size - 4 ).')';
    }
    if( $out -> notnull == 't' )
    $item[$i] .= ' NOT';
    $item[$i] .= ' NULL';
  }
  $create .= implode( ",\n", $item ) ."\n);";
  return $create;
}
How i can extract the struct of a Postgresql Table?
I want to do a dynamic php code, that see the pg table, and print name, type and size of fields