2013-05-18 65 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); 

?>