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

Posted

技术标签:

【中文标题】JSON 值编码两次:如何使用 fetch_assoc()?【英文标题】:JSON value encoded twice : how to use 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()). 我不明白这是怎么回事。

【问题讨论】:

【参考方案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) 可以。谢谢!

以上是关于JSON 值编码两次:如何使用 fetch_assoc()?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel json() 响应返回值两次

Swift Codable - 如何编码和解码字符串化的 JSON 值?

Scala使用circe将None编码为NaN json值

使用 circe 将 Scala None 编码为 JSON 值

如何使用json方法解析android中没有键名的数组内的嵌套json编码数组?

边距:0 自动属性值列出一次 vs 两次