2015-08-10 9 views
6

Sto usando un database Postgres 9.4 e ho PHP come front-end.Esiste comunque un modo per indicare il tipo di dati in un array Postgres?

Una query generale io possa correre sarebbe simile a questa:

PHP:

$query = "select * from some_table"; 
pg_prepare($connection,"some_query",$query); 
$result = pg_execute($connection,"some_query",array()); 

while ($row = pg_fetch_array($result,null,PGSQL_ASSOC)) { 
    echo $row['some_field']; 
    echo $row['some_field_1']; 
    echo $row['some_field_2']; 
} 

Sono in esecuzione in un front-end che richiede di conoscere il tipo di dati della colonna che sputa fuori - In particolare ho bisogno di sapere quando il campo del database echo è una colonna timestamp.

Ovviamente sono in grado di dire integers e string, tuttavia il timestamp è un po 'diverso.

Suppongo che potrei vedere se strtotime() restituisce falso, tuttavia questo mi sembra un po 'sporco.

Quindi la mia domanda è:

C'è una funzione built-in PHP che può restituire un array multi-dimensionale della riga di database non solo $key=>$value coppia, ma anche la datatype?

Qualsiasi aiuto su questo sarebbe apprezzato - grazie!

+2

Non ci sono domande per ottenere questo e v'è anche http://php.net/manual/en/function.pg- field-type.php – AbraCadaver

+0

@AbraCadaver Si prega di postare questo con una piccola elaborazione come risposta. –

risposta

1

È possibile eseguire una query da information_schema.columns a prendere proprio come qualsiasi altra query:

SELECT column_name, data_type 
FROM information_schema.columns 
WHERE table_name='some_table' 

o dopo il vostro uso di query pg_field_type():

$type = pg_field_type($result, 0); 

Ma è necessario conoscere la posizione della colonna nella risultato quindi dovresti (best practice comunque) elencare le colonne. Per il caso di cui sopra utilizzando 0 darebbe il tipo di col1 nella query di seguito ::

SELECT col1, col2, col3 FROM some_table