JSON 值编码两次:如何使用 fetch_assoc()?

2022-01-20 00:00:00 json fetch php pdo

以下代码返回值两次,一次以 JSON 编码:

prepare('SELECT Date, Open, Close FROM quotes WHERE Symbol = ? AND Date > ? AND Date < ?');$req->execute(array($_GET['id'], $_GET['datemin'], $_GET['datemax']));$测试=数组();while ($donnees = $req->fetch()){$test[] = $donnees;}回声 json_encode($test);?>

<块引用>

[{"日期":"2012-02-29","0":"2012-02-29","开盘":"88.14","1":"88.14","收盘":"87.60","2":"87.60"},{"日期":"2012-02-28","0":"2012-02-28","开盘":"87.83","1":"87.83","收盘":"87.77","2":"87.77"},{"日期":"2012-02-27","0":"2012-02-27","开盘":"87.41","1":"87.41","关闭":"88.07","2":"88.07"}]

我阅读了 一些帖子 我有使用 fetch_assoc() 而不是 fetch_array().

但下面的代码什么也不返回:while ($donnees = $req->fetch_assoc()).这个也没有:while ($donnees = $req->fetch_array()).
我不明白这是怎么回事.

解决方案

参见手册.
http://www.php.net/manual/en/pdostatement.fetch.php

你应该试试:

$req->fetch(PDO::FETCH_ASSOC)

The following code returns the value twice, once encoded in JSON :

<?php
    $req = $bdd->prepare('SELECT Date, Open, Close FROM quotes WHERE Symbol = ? AND Date > ? AND Date < ?');
    $req->execute(array($_GET['id'], $_GET['datemin'], $_GET['datemax']));

    $test=array();
    while ($donnees = $req->fetch())
    {
        $test[] = $donnees;
    }

    echo json_encode($test);
?>

[{"Date":"2012-02-29","0":"2012-02-29","Open":"88.14","1":"88.14","Close":"87.60","2":"87.60"},{"Date":"2012-02-28","0":"2012-02-28","Open":"87.83","1":"87.83","Close":"87.77","2":"87.77"},{"Date":"2012-02-27","0":"2012-02-27","Open":"87.41","1":"87.41","Close":"88.07","2":"88.07"}]

I read on some post I have to use fetch_assoc() instead of fetch_array().

But the following code returns nothing : while ($donnees = $req->fetch_assoc()). Nor does this one : while ($donnees = $req->fetch_array()).
I don't get what's wrong.

解决方案

See manual.
http://www.php.net/manual/en/pdostatement.fetch.php

You should try:

$req->fetch(PDO::FETCH_ASSOC)

相关文章