PHP Doku:: Gibt den belegten Speicher für ein Feld zurück - function.pg-field-size.html

Verlauf / Chronik / History: (2) anzeigen

Sie sind hier:
Doku-StartseitePHP-HandbuchFunktionsreferenzDatenbankerweiterungenAnbieterspezifische DatenbankerweiterungenPostgreSQLPostgreSQL-Funktionenpg_field_size

Ein Service von Reinhard Neidl - Webprogrammierung.

PostgreSQL-Funktionen

<<pg_field_prtlen

pg_field_table>>

pg_field_size

(PHP 4 >= 4.2.0, PHP 5)

pg_field_size Gibt den belegten Speicher für ein Feld zurück

Beschreibung

int pg_field_size ( resource $result , int $field_number )

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().

Parameter-Liste

result

PostgreSQL Verbindungskennung, die (unter anderem) von den Funktionen pg_query(), pg_query_params() oder pg_execute() zurückgegeben wurde.

field_number

Die Feldnummer, beginnend bei 0.

Rückgabewerte

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.

Beispiele

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 

Siehe auch


3 BenutzerBeiträge:
- Beiträge aktualisieren...
ij at NOSPAM dot irj dot co dot za
14.06.2005 13:21
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
php at tribun dot de
23.02.2005 14:49
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;
}
alex at linuxNOSPAM dot org dot pe
3.07.2002 6:44
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



PHP Powered Diese Seite bei php.net
The PHP manual text and comments are covered by the Creative Commons Attribution 3.0 License © the PHP Documentation Group - Impressum - mail("TO:Reinhard Neidl",...)