在PostgreSQL数组中,有没有办法告诉数据类型?

6
我可以帮您进行翻译。这是关于编程的内容,介绍了一个使用Postgres 9.4数据库和PHP前端的基本查询,示例如下:

我正在使用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'];
}

我遇到了一个需要知道所输出的列的数据类型的前端问题,具体来说,我需要知道何时回显的数据库字段是一个timestamp列。
显然,我能够识别整数字符串,但是时间戳就有些不同。
我想我可以查看strtotime()是否返回false,但那似乎有点儿不干净。
因此我的问题是:
是否有PHP内置函数可以返回带有非仅$key=>$value对而且包括datatype的数据库行的多维数组?
对此的任何帮助将不胜感激 - 谢谢!

2
有查询可用来获取此信息,并且还有http://php.net/manual/en/function.pg-field-type.php。 - AbraCadaver
@AbraCadaver请稍微详细地回答并发布您的答案。 - Craig Ringer
1个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接