2013-04-02 49 views
0

如何獲取沒有雙引號的數據?在Postgres中,使用fetchAll(PDO :: FETCH_NUM)。我如何擺脫雙引號?

讓我解釋一下: 我正在使用PostgreSQL數據庫和PHP PDO來獲取數據。

它返回的數據是:

[["1358991300","70175.47"],["1359077700","70437.59"]...] 

但我需要的是:

[[1358991300,70175.47],[1359077700,70437.59]...] 

基本上所有的數據,沒有雙引號。

非常感謝您的幫助!

+0

是不是'json_encode'? – hjpotter92

+0

請在'psql'中顯示產生此數據的查詢,PostgreSQL版本以及相同查詢的輸出。 –

+0

以及查詢是:SELECT date_part('epoch',t.time)as unixtime,t.energy_consumption FROM(SELECT time,energy_consumption,ROW_NUMBER()OVER(ORDER BY energy_consumption)AS rownum FROM consumption WHERE id ='001EC60018E22') AS t WHERE t.rownum%1440 = 0; –

回答

1

Postgres PDO返回PHP中的字符串而不是預期的數據類型。

嘗試通過轉換類型:

$timestamp = intval($row[0]); 
$energy = floatval($row[1]); 

UPDATE

PDO具有經由bindColumn進行類型轉換有限的支持:

PDO + MySQL always returns strings, but what about MsSQL?

http://php.net/manual/en/pdostatement.bindcolumn.php

我不使用Postgres,那麼有人可以確認嗎?

更新2

既然你json_encoding,嘗試(PHP> = 5.3.3):

json_encode($result, JSON_NUMERIC_CHECK); 

要自動轉換數字字符串到數字。

+0

這似乎是真的。有沒有更好的方式來獲取數值而不是字符串?要處理的數據很可能會達到幾百萬。 –

+0

這是PHP和PDO的大多數db驅動程序的限制,特別是因爲您需要返回十進制值。你如何處理需要明確轉換的數據? – methai

+0

它將被繪製或下載。但我想我只是找到了解決方案!我可以使用json_encode($ data,JSON_NUMERIC_CHECK)刪除引號。這確實刪除了引號,我只是不確定這是多高效。 –