更改json_encode()输出结构

时间:2015-06-17 17:04:16

标签: php mysql json pdo

我使用json_encode()从MySQL检索数据。

$sq ="SELECT physics, chemistry, agriculture FROM subjects WHERE student = :student";
$stmt = $getdb->prepare($sq);
$stmt->execute(array(':student'=>"123456"));
$rslt = $stmt->fetchAll();

$sd=array();
foreach($rslt as $val){
     $sd[] = $val; 
}
echo json_encode($sd);

这是当前的输出数据结构

array(
    array(
        "0" => 97,
        "1" => 38,
        "2" => 73,
        "physics" => 97,
        "chemistry" => 38,
        "agriculture" => 73,
    )
);

如何输出以上内容:

array(
    array(
        "physics" => 97,
        "chemistry" => 38,
        "agriculture" => 73,
    )
);

2 个答案:

答案 0 :(得分:0)

$stmt->fetchAll(PDO::FETCH_ASSOC)

执行前 这迫使PDO仅使用关联表示。

答案 1 :(得分:-2)

从mysql中获取行时,您已使用http://php.net/manual/en/function.mysql-fetch-array.php或等效项。这使得数字索引和字符串索引。使用mysql_fetch_assoc或http://php.net/manual/en/mysqli-result.fetch-assoc.php将返回仅包含字符串索引的数组