使用 Mysql Php 从 2 个表中获取数据后如何编码 JSON?

How to encode JSON after fetching data from 2 tables using Mysql Php?

// Fetching Name Of Exam
$sql = "SELECT distinct(`nameofexam`) FROM `marks` WHERE `OrgId`=$schoolid AND `Admno`=$Admno";
$result = $objcon->query($sql);

if ($result->num_rows > 0) {
  $row1 = array();
  // output data of each row
  $array1 = array();
  $json = array();
  while ($row = $result->fetch_assoc()) {
    $exam = $row["nameofexam"];
    $json[] = $exam;

    header('Content-type: application/json');
    // Fetching Exam details

    $sql1 = "SELECT  distinct Admno,Class,subject,`markobtained`,Position
            FROM    ( SELECT  @r:= CASE WHEN @e = nameofexam THEN @r + CASE WHEN @p = `markobtained` THEN 0 ELSE @i END ELSE 1 END Position,
                        @i:= CASE WHEN @p = `markobtained` THEN @i + 1 ELSE 1 END incr,
                        @e:= nameofexam,
                        @p:= `markobtained`, 
                        Admno,
                        Class,
                        nameofexam,
                        subject,
                        `markobtained`
                      FROM    marks,
                        (SELECT @e:= '') e,
                        (SELECT @r:= 0) r,
                        (SELECT @p:= 0) p,
                        (SELECT @i:= 0) i
                      ORDER BY nameofexam, `markobtained` desc
                    ) T 
            WHERE `Admno`=$Admno AND `nameofexam`='$exam'
            ORDER BY `subject`,position";
    $result1 = $objcon->query($sql1);
    if ($result1->num_rows > 0) {

      while ($row1 = $result1->fetch_assoc()) {

        array_push($json, $row1);
      }
    }
  }

  header('Content-type: application/json');
  echo json_encode($array1, $response_array);
} else {
  echo "No Exam Details Avalable";
}

我期待这样的输出。程序逻辑很简单。首先从 table1 中选择考试名称,然后从另一个 table 中获取该考试的相应标记 sheet 并对其进行编码。我需要使用 php 将 mysql 中的多行编码为 json 。请帮助我...

预期输出

{"Onam Exam":[{"Admno": "3123","Class": "LKG-A","subject": "english ","markobtained": "50","Position": "1" }] }

终于有输出了。这是工作代码

 <?php
    $sql = "SELECT distinct(`nameofexam`) FROM `marks` WHERE `OrgId`=$schoolid AND `Admno`=$Admno";
    $result = $objcon->query($sql);

    if ($result->num_rows > 0) {
      $row1 = array();
      // output data of each row
      $array1 = array();
      $json = array();
       $j=0; 
      while ($row = $result->fetch_assoc()) {
        $exam = $row["nameofexam"];

        header('Content-type: application/json');
        // Fetching Exam details
        $sql1 = "SELECT  distinct Admno,Class,subject,`markobtained`,Position
                FROM    ( SELECT  @r:= CASE WHEN @e = nameofexam THEN @r + CASE WHEN @p = `markobtained` THEN 0 ELSE @i END ELSE 1 END Position,
                            @i:= CASE WHEN @p = `markobtained` THEN @i + 1 ELSE 1 END incr,
                            @e:= nameofexam,
                            @p:= `markobtained`, 
                            Admno,
                            Class,
                            nameofexam,
                            subject,
                            `markobtained`
                          FROM    marks,
                            (SELECT @e:= '') e,
                            (SELECT @r:= 0) r,
                            (SELECT @p:= 0) p,
                            (SELECT @i:= 0) i
                          ORDER BY nameofexam, `markobtained` desc
                        ) T 
                WHERE `Admno`=$Admno AND `nameofexam`='$exam'
                ORDER BY `subject`,position";
        $result1 = $objcon->query($sql1);
        $test_array=array();

        if ($result1->num_rows > 0) {
        $i=0;       
          while ($row1 = $result1->fetch_assoc()) {
              $test_array[$i]["Admno"]=$row1["Admno"];
              $test_array[$i]["Class"]=$row1["Class"];
              $test_array[$i]["subject"]=$row1["subject"];
              $test_array[$i]["markobtained"]=$row1["markobtained"];
              $test_array[$i]["Position"]=$row1["Position"];

             $i++;


          }

     $response[$j]=array(
            $exam=> $test_array
    );  
    $j++;

        }

            }

      header('Content-type: application/json');
      echo json_encode($response);
    } else {
      echo "No Exam Details Avalable";
    }
      }
    ?> 

输出

[{"Onam Exam":[{"Admno":"3123","Class":"LKG-A","subject":"english ","markobtained":"50","Position":"1"},{"Admno":"3123","Class":"LKG-A","subject":"Physics","markobtained":"10","Position":"18"}]},{"Xmas Exam":[{"Admno":"3123","Class":"LKG-A","subject":"Chemistry","markobtained":"9","Position":"2"},{"Admno":"3123","Class":"LKG-A","subject":"Hindi","markobtained":"100","Position":"21"},{"Admno":"3123","Class":"LKG-A","subject":"Physics","markobtained":"99","Position":"1"}]}]