【问题标题】:No JSON returned in Postman if the number of rows exceeds 15如果行数超过 15,则 Postman 中不返回 JSON
【发布时间】:2017-10-29 13:18:39
【问题描述】:

我有一个 REST API,它是为获取我们正在开发的测验应用程序的问题和答案数据而编写的,并且正在使用的 sql 在 API 文件中如下所示。 我已将限制设置为 (LIMIT 0,15),就好像我将其更改为 16 一样,邮递员没有返回任何数据。以下是相同的屏幕截图。

<?php

include('config.php');

 if (isset($_SERVER['HTTP_ORIGIN'])) {
    header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
    header('Access-Control-Allow-Credentials: true');
    header('Access-Control-Max-Age: 86400');    // cache for 1 day
}

// Access-Control headers are received during OPTIONS requests
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {

    if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
        header("Access-Control-Allow-Methods: GET, POST, OPTIONS");         

    if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
        header("Access-Control-Allow-Headers:
 {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");

    exit(0);
  }

 $postdata = file_get_contents("php://input");
 if (isset($postdata)) 
 {
    $request = json_decode($postdata);

    $SubID = $request->SubID;

    if( isset($SubID) ) {
        $select_sql = "SELECT * FROM `questions` WHERE `subjectid` = 
   '".$SubID."'";

        $select_query = mysqli_query($con,$select_sql);
        $count = mysqli_num_rows($select_query);
        if($count>0) {
            while($fetch_obj = mysqli_fetch_array($select_query 
 ,MYSQLI_BOTH)) {

                    $SubId = $fetch_obj["subjectid"];
                    $QuestId = $fetch_obj["questionid"];
                    $QuestType = $fetch_obj["questiontype"];
                    $Quest = $fetch_obj["question"];
                    $Ans1 = $fetch_obj["answer1"];
                    $Ans2 = $fetch_obj["answer2"];
                    $Ans3 = $fetch_obj["answer3"];
                    $Ans4 = $fetch_obj["answer4"];
                    $CorrectAns = $fetch_obj["correctanswer"];
                    $Hint = $fetch_obj["hint"];
                    $DiffLevel = $fetch_obj["difficultylevel"];
                    $Status = $fetch_obj["status"];
                    $AnsDescrip = $fetch_obj["ans_description"];

                    $QuestionsList[] = array( "SubjectID" => "$SubId",
                        "QuestionID" => "$QuestId", 
                        "QuestionType" => "$QuestType", 
                        "Question" => "$Quest",
                        "Answer1" => "$Ans1", 
                        "Answer2" => "$Ans2",
                        "Answer3" => "$Ans3",
                        "Answer4" => "$Ans4",
                        "CorrectAnswer" => "$CorrectAns",
                        "Hint" => "$Hint", 
                        "DiffLevel" => "$DiffLevel",
                        "Status" => "$Status",
                        "AnsDescription" => "$AnsDescrip");

            }
                $json = array("status" => 1, 
                    "message" => "Questions list Successfully fetched", 
                    "QuestionsList" => var_dump($QuestionsList));
               /* foreach ($QuestionsList as $value) {
                    print_r($value);
                }*/
        }
        else {
                $json = array("status" => 0, "message" => "No Records 
Found.", "query" => $select_sql);
        }

    }
}
mysqli_close($con);

header('Content-type: application/json');
echo json_encode($json);

?>

在 sql 中有 LIMIT 0, 15 时,它会返回如下所示的数据:

如果我删除 sql 中的 LIMIT,它不会返回任何内容,如下所示。

这是否与 php 中的 JSON 响应数据限制有关,如果是,我在哪里可以更改?而且我还签入了生产实时服务器,它返回了相同的结果。 请帮我解决这个问题。

关于做一个 var_dump($QuestionList) :

【问题讨论】:

  • 当您无限制地执行var_dump($QuestionsList); 时,您会得到什么?
  • 如果你访问数据库,看看,如果查询直接工作。
  • @UmashankarDas 是的,查询在数据库中检查时返回记录
  • @Bara'ayyash ..谢谢!!如果我使用 var_dump($QuestionsList); 它将返回数据,但它是 HTML 格式的。如何将其转换为 JSON 或如何获取 JSON 格式的数据?
  • 你能把完整的代码吗?做完$json=

标签: php mysql json api postman


【解决方案1】:

您的查询:

$select_sql = "SELECT * FROM `questions` WHERE `subjectid` = 
     '".$SubID."' LIMIT 0, 15";

无限制:

$select_sql = "SELECT * FROM `questions` WHERE `subjectid` = 
     '".$SubID."'";

LIMIT 0,15:

  • 0 是第一行的偏移量。
  • 15 是从表返回的最大行数。

【讨论】:

  • 谢谢,我知道 LIMIT 的作用,但我遇到的问题是,如果我删除限制或将最大数量增加到 16 ,它根本不返回任何数据,如图所示第二张截图。
猜你喜欢
  • 1970-01-01
  • 2019-03-31
  • 2019-02-15
  • 2015-08-02
  • 2017-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-10
相关资源
最近更新 更多