【问题标题】:PHP JSON array from SQLite3来自 SQLite3 的 PHP JSON 数组
【发布时间】:2013-05-18 09:29:39
【问题描述】:

我正在尝试使用 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)) );
}
?>

【问题讨论】:

  • 尝试删除带有$result-&gt;setFetchMode(PDO::FETCH_ASSOC) 的行,并在while 行上执行此操作:while ($data = $result-&gt;fetchAll(PDO::FETCH_ASSOC))
  • 你不会在循环中调用fetchAll,它会一次将所有结果作为二维数组返回。
  • 好点,电话应该是$result-&gt;fetch(),而不是$result-&gt;fetchAll()。或者,您可以先调用$data = $result-&gt;fetchAll(),然后将while 循环转换为foreach 循环。

标签: php json sqlite


【解决方案1】:

现在可以使用了。感谢您的帮助!

<?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);

?>

【讨论】:

    【解决方案2】:

    变化:

    $result->fetchall($result)
    

    到:

    $result->fetch()
    

    您有两个问题:fetchAll() 的参数应该是获取模式,而不是结果。 fetchAll() 返回所有行,而不是一次返回一行。如果您在循环中调用,请使用fetch()

    【讨论】:

      【解决方案3】:

      PDO 的 fetchAll 函数,不期望查询本身作为参数。

      在此处查看它的手册 - 您可以将其留空,或设置获取模式:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-31
        • 1970-01-01
        • 1970-01-01
        • 2013-11-29
        相关资源
        最近更新 更多