2015-08-10 13 views
6

Tôi đang sử dụng cơ sở dữ liệu Postgres 9.4 và có PHP làm giao diện người dùng của mình.Có anyway để nói cho datatype trong một mảng postgres?

Một truy vấn chung tôi có thể chạy sẽ trông như thế này:

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

Tôi chạy vào một front-end mà đòi hỏi phải biết datatype của cột mà spits ra - đặc biệt tôi cần biết khi trường cơ sở dữ liệu echo'd là cột timestamp.

Rõ ràng tôi có thể nói integersstring, tuy nhiên dấu thời gian là một chút khác biệt.

Tôi cho rằng tôi có thể thấy nếu strtotime() trả về false, tuy nhiên điều đó có vẻ hơi bẩn đối với tôi.

Vì vậy, câu hỏi của tôi là:

Có một PHP built-in chức năng có thể trả về một mảng đa chiều của hàng cơ sở dữ liệu với không chỉ $key=>$value cặp mà còn là datatype?

Bất kỳ trợ giúp nào về điều này sẽ được đánh giá cao - cảm ơn bạn!

+2

Có các truy vấn để có được điều này và đó cũng là http://php.net/manual/en/function.pg- field-type.php – AbraCadaver

+0

@AbraCadaver Vui lòng đăng bài đó với một chút công phu như một câu trả lời. –

Trả lời

1

Bạn có thể truy vấn từ information_schema.columns và lấy giống như bất kỳ truy vấn khác:

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

Hoặc sau khi sử dụng truy vấn của bạn pg_field_type():

$type = pg_field_type($result, 0); 

Nhưng bạn cần phải biết vị trí của các cột trong do đó bạn nên (thực hành tốt nhất anyway) danh sách các cột. Đối với trường hợp trên sử dụng 0 sẽ cung cấp cho các loại col1 trong truy vấn dưới đây ::

SELECT col1, col2, col3 FROM some_table 
Các vấn đề liên quan