【问题标题】:How to encode fetched data from MySQL to JSON via PHP如何通过 PHP 将获取的数据从 MySQL 编码为 JSON
【发布时间】:2014-02-25 00:56:56
【问题描述】:

我正在尝试通过 PHP 将来自 Mysql 数据库的数据编码为 JSON 格式。代码段如下:

try
{
    $statement = $db->prepare($query);
    $result = $statement->execute($query_params);

    $rows = $statement->fetchAll();

    echo print_r($rows)."<br/>";

    foreach($rows as $row)
    {
        foreach($row as $a)
    {
        $studentInfo = array();
        $studentInfo["course"] = $a["coursename"];
        $studentInfo["grade"] = $a["grade"];
        array_push($response['info'], $studentInfo);
    }
    }
    echo json_encode($response);
}

但我无法将此数组编码为 JSON。 print_r($rows) 打印以下内容:

Array (
    [0] => Array (
        [id] => 22222
        [coursename] => sp1
        [grade] => B
    )
    [1] => Array (
        [id] => 22222
        [coursename] => sw1
        [grade] => A-
    )
    [2] => Array (
        [id] => 22222
        [coursename] => sw2
        [grade] => B+
    )
)
1

并且 echo json_encode($response) 打印以下内容:

{"info":null}

谁能告诉我如何将此数组解析为 JSON? 我想以 JSON 格式获取每门课程及其成绩。

【问题讨论】:

  • 去掉内循环。 $row 包含您要查找的内容,而不是 $a
  • 或只是 json_encode(array('info'=&gt;$rows)) 来自您原来的 $rows ... 不需要 任何 循环..
  • 感谢数据。去掉内循环解决了这个问题!!!

标签: php mysql arrays json


【解决方案1】:
try
{
    $statement = $db->prepare($query);
    $result = $statement->execute($query_params);

    $rows = $statement->fetchAll();

    echo print_r($rows)."<br/>";

    $response=array();
    $info=array();

    foreach($rows as $row)
    {      
        $studentInfo = array();
        $studentInfo["id"]=$row["id"];
        $studentInfo["course"] = $row["coursename"];
        $studentInfo["grade"] = $row["grade"];
        array_push($info, $studentInfo);    
    }

    $response['info']=$info;
    echo json_encode($response); // or echo json_encode($info);// whatever you want
 }

【讨论】:

    【解决方案2】:

    我会这样做:

    try {
        $statement = $db->prepare($query);
        $result = $statement->execute($query_params);
        if($result) {
            $arr = Array();
            while ($row = $result->fetch_assoc()) {
                $arr[] = $row;
            }
         echo json_encode($arr);
        }
    }
    

    【讨论】:

      【解决方案3】:

      json_encode() 可以直接对数组进行编码。

      在您的代码第 8 行,可以这样做

      echo json_encode($rows);
      

      请点击这里查看更多信息 http://php.net/manual/en/function.json-encode.php

      <?php
      $arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
      
      echo json_encode($arr);
      ?>
      

      输出:
      {"a":1,"b":2,"c":3,"d":4,"e":5}

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-16
        • 2015-11-17
        • 1970-01-01
        相关资源
        最近更新 更多