Есть ли способ указать тип данных в массиве postgres?

Я использую базу данных Postgres 9.4 и использую PHP в качестве внешнего интерфейса.

Общий запрос, который я могу выполнить, будет выглядеть так:

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

Я сталкиваюсь с внешним интерфейсом, который требует знать тип данных столбца, который выплевывает — особенно мне нужно знать, когда поле базы данных echo’d является timestamp колонка.

Очевидно, я могу сказать integers а также stringОднако временная метка — это немного другое.

Я полагаю, я мог видеть, если strtotime() возвращает false, однако это кажется мне немного грязным.

Итак, мой вопрос:

Есть ли встроенная функция PHP, которая может возвращать многомерный массив строки базы данных с не только $key=>$value пара, но и datatype?

Любая помощь в этом будет оценена — спасибо!

6

Решение

Вы можете запросить от information_schema.columns и получить как любой другой запрос:

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

Или после использования вашего запроса pg_field_type ():

$type = pg_field_type($result, 0);

Но вам нужно знать положение столбца в результате, поэтому вы должны (в любом случае, лучше) перечислить столбцы. Для приведенного выше случая, используя 0 даст тип col1 в запросе ниже ::

SELECT col1, col2, col3 FROM some_table
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]