2015-08-10 4 views
6

Ich benutze eine Postgres 9.4 Datenbank und habe PHP als mein Frontend.Gibt es überhaupt den Datentyp in einem Postgres-Array zu sagen?

Eine allgemeine Abfrage, die ich laufen kann, würde so aussehen:

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']; 
} 

ich in einem Front-End leite, die den Datentyp der Spalte zu wissen, erfordert die ausspuckt - speziell muss ich wissen, wenn das echo'd Datenbankfeld eine timestamp Spalte ist.

Offensichtlich kann ich sagen integers und string, jedoch Zeitstempel ist ein bisschen eine andere Sache.

Ich denke, ich könnte sehen, ob strtotime() falsch zurückgibt, aber das scheint ein bisschen schmutzig für mich.

Also meine Frage ist:

Gibt es eine PHP eingebaute Funktion, die ein mehrdimensionales Array der Datenbankzeile mit nicht nur $key=>$value Paar, sondern auch die datatype zurückkehren kann?

Jede Hilfe zu diesem würde geschätzt werden - danke!

+2

Es gibt Anfragen auch diese, und es gibt zu bekommen http://php.net/manual/en/function.pg- field-type.php – AbraCadaver

+0

@AbraCadaver Bitte posten Sie das mit ein wenig Ausarbeitung als Antwort. –

Antwort

1

Sie können von information_schema.columns abfragen und holen wie jede andere Abfrage:

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

oder nach Ihrer Anfrage Verwendung pg_field_type():

$type = pg_field_type($result, 0); 

Aber Sie müssen die Position der Spalte wissen, in der Ergebnis, so sollten Sie (Best Practice sowieso) die Spalten auflisten. Für den obigen Fall 0 Verwendung würde die Art der col1 in der Abfrage geben unter ::

SELECT col1, col2, col3 FROM some_table