【问题标题】:JSON value encoded twice : how to use fetch_assoc()?JSON 值编码两次:如何使用 fetch_assoc()?
【发布时间】:2013-05-06 02:59:40
【问题描述】:

以下代码返回值两次,一次以 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"}]

我在some post 上阅读,我必须使用fetch_assoc() 而不是fetch_array()

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

【问题讨论】:

    标签: php json pdo fetch


    【解决方案1】:

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

    你应该试试:

    $req->fetch(PDO::FETCH_ASSOC)
    

    【讨论】:

    • @pihug12 如果您将答案标记为正确,那就太好了,除非您当然已经死了
    【解决方案2】:

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

    您可以使用fetch 的第一个参数更改 PDO 的 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);
    

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

    【讨论】:

    • $req-&gt;fetch(PDO::FETCH_ASSOC) 可以。谢谢!
    猜你喜欢
    • 2016-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-10
    • 1970-01-01
    • 2016-05-28
    相关资源
    最近更新 更多