我正在尝试通过使用PHP将数据从SQLite3 db转换为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)) );
}
?>
已经修好了。谢谢你的帮助!
<?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);
?>
变化:
$result->fetchall($result)
:
$result->fetch()
你有两个问题:fetchAll()
的参数应该是一个获取模式,而不是一个结果。fetchAll()
返回所有行,而不是一次返回一行。如果你在循环中调用,你可以使用fetch()
。
PDO的fetchAll函数,不期望查询本身作为参数。
检查这里的手动-你可以留空,或设置获取模式:
http://php.net/manual/en/pdostatement.fetchall.php