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)
pg_field_name
(PHP 4 >= 4.2.0, PHP 5)
pg_field_name — Restituisce il nome di un campo
Descrizione
string pg_field_name
( resource
$risultato
, int $numero_campo
)
pg_field_name() restituisce il nome del campo
che occupa la posizione indicata da numero_campo, rispetto
alla risorsa risultato. La numerazione
dei campi parte da 0.
Nota:
Questa funzione si chiamava pg_fieldname().
Vedere anche pg_field_num().
Anonymous ¶
8 years ago
ccasal at compuserve dot com ¶
12 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"
