Я использую базу данных 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
?
Любая помощь в этом будет оценена — спасибо!
Вы можете запросить от 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
Других решений пока нет …