2013-05-18 92 views
1

我想通過使用PHP將數據從SQLite3數據庫轉換爲JSON數組。我越來越接近,但我似乎無法做到。來自SQLite3的PHP JSON數組

這是我得到的錯誤: PHP的警告:PDOStatement對象::使用fetchall()預計參數1長,對象...

感謝給!

<?php 
$db = new PDO('sqlite:example.db'); 

$result = $db->query('SELECT * FROM test'); 

$json = array(); 

$result->setFetchMode(PDO::FETCH_ASSOC); 

while ($data = $result->fetchall($result)){ 

$x = $data['Time']; 
$y = $data['Temperature']; 

$json[] = array((int($x)), (int($y))); 
} 
?> 
+0

嘗試取出用線'$ result->調用setFetchMode(PDO :: FETCH_ASSOC)',而做到這一點的,而行:'而($數據= $ result->使用fetchall(PDO :: FETCH_ASSOC) )' –

+0

你不叫'fetchAll'在一個循環中,它返回一次所有結果爲2維數組。 – Barmar

+0

好點,調用應該是'$ result-> fetch()',而不是'$ result-> fetchAll()'。或者,您可以先調用'$ data = $ result-> fetchAll()',然後將while循環轉換爲foreach循環。 –

回答

1

變化:

$result->fetchall($result) 

到:

$result->fetch() 

你有兩個問題:參數fetchAll()應該是af蝕刻模式,而不是結果。並且fetchAll()返回所有行,而不是一次一行。如果您使用fetch()進行循環呼叫。

3

現在就工作吧。謝謝你的幫助!

<?php 

$db = new PDO('sqlite:example.db'); 

$result = $db->query('SELECT * FROM test'); 

$datapie = array(); 

$result->setFetchMode(PDO::FETCH_ASSOC); 

while ($row = $result->fetch()) { 

extract($row); 

$datapie[] = array(floatval($Temperature), $Time); 
} 

$data = json_encode($datapie); 

?>