以下代码返回值两次,一次以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())
我没有弄到什么问题。
答案 0 :(得分:2)
答案 1 :(得分:1)
我不知道req
是什么,但我的猜测是它是一个PDOStatement
对象,只有fetch
和fetchAll
方法(没有{{ 1}}或fetch_assoc
)。
您可以使用fetch_array
的第一个参数更改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
方法。您将不得不查找如何更改获取模式。