2

以下代码返回该值两次,一次以 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);
?>

[{"日期":"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())
我不明白出了什么问题。

4

2 回答 2

2

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

你应该试试:

$req->fetch(PDO::FETCH_ASSOC)
于 2013-05-11T15:55:46.320 回答
1

嗯,我不知道是什么req,但我猜它是一个PDOStatement对象,它只有fetchfetchAll方法(没有fetch_assocfetch_array)。

您可以使用第一个参数更改 PDO 的 fetch 样式fetch。它默认为PDO::FETCH_BOTH(类似于mysql_fetch_array)。您可以将其设置为PDO::FETCH_ASSOC,这就像mysql_fetch_assoc您喜欢的那样。

$req->fetch(PDO::FETCH_ASSOC);
//global setting
$bdd->setFetchMode(PDO::FETCH_ASSOC);

如果它不是 a PDOStatement,那么无论它是什么都没有fetch_assocfetch_array方法。您必须查找如何更改获取模式的任何内容。

于 2013-05-11T15:55:35.370 回答