反正有没有告诉postgres数组中的数据类型?

时间:2015-08-10 17:08:51

标签: php arrays postgresql sqldatatypes

我正在使用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列。

显然我可以告诉integersstring,但是时间戳有点不同。

我想我可以看到strtotime()是否返回false,但这对我来说似乎有点脏。

所以我的问题是:

是否有PHP内置函数可以返回数据库行的多维数组,不仅包含$key=>$value对,还包含datatype

对此有任何帮助将不胜感激 - 谢谢!

1 个答案:

答案 0 :(得分:1)

您可以从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