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->fetch_assoc())
。这个也没有:while ($donnees = $req->fetch_array())
.
我不明白这是怎么回事。
【问题讨论】:
【参考方案1】:参见手册。http://www.php.net/manual/en/pdostatement.fetch.php
你应该试试:
$req->fetch(PDO::FETCH_ASSOC)
【讨论】:
@pihug12 如果您将答案标记为正确,那就太好了,除非您当然已经死了【参考方案2】:我不知道req
是什么,但我猜它是一个PDOStatement
对象,它只有fetch
和fetchAll
方法(没有fetch_assoc
或fetch_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_assoc
或fetch_array
方法。您必须查找如何更改获取模式的任何内容。
【讨论】:
$req->fetch(PDO::FETCH_ASSOC)
可以。谢谢!以上是关于JSON 值编码两次:如何使用 fetch_assoc()?的主要内容,如果未能解决你的问题,请参考以下文章
Swift Codable - 如何编码和解码字符串化的 JSON 值?
使用 circe 将 Scala None 编码为 JSON 值