为什么第一个php文件返回错误信息,而第二个返回正确信息?

时间:2019-03-26 11:09:54

标签: php json

我是php的新手,我真的可以使用一些帮助。

我有一个php文件,该文件以错误的顺序返回请求的信息或根本不返回信息,更改了我设法获得所需结果的php文件中的变量。

仍然,给定以下文件怎么办?

第一个php文件返回错误信息

<?php
    $con = mysqli_connect("localhost", "user", "password", "user");

    //$idquestion = @($_POST['idquestion']);
    //$category = @($_POST['category']);
    $idquestion="1";
    $category="computers";

    $statement = mysqli_prepare($con, "SELECT * FROM question WHERE idquestion=? AND category=?;");
    mysqli_stmt_bind_param($statement, "is", $idquestion,  $category);
    mysqli_stmt_execute($statement);

    mysqli_stmt_store_result($statement);
    mysqli_stmt_bind_result($statement, $success, $idquestion, $question, $id);

    $response = array();
    $response["success"] = false;

    while(mysqli_stmt_fetch($statement)){
        $response["success"] = true;
        $response["idquestion"] = $idquestion;
        $response["question"] = $question;
        $response["id"] = $id;
    }

    echo json_encode($response);
?>

输出

{"success":true,"idquestion":"Top programming languages?","question":"computers","id":1}

第二个php文件返回正确的信息

<?php
    $con = mysqli_connect("localhost", "id8963226_user", "parola123", "id8963226_user");

    //$idquestion = @($_POST['idquestion']);
    //$category = @($_POST['category']);
    $idquestion="4";
    $category="computers";

    $statement = mysqli_prepare($con, "SELECT * FROM question WHERE idquestion=? AND category=?;");
    mysqli_stmt_bind_param($statement, "is", $idquestion,  $category);
    mysqli_stmt_execute($statement);

    mysqli_stmt_store_result($statement);
    mysqli_stmt_bind_result($statement, $success, $idquestion, $question, $id);

    $response = array();
    $response["success"] = false;
    $response["idquestion"] = $idquestion;

    while(mysqli_stmt_fetch($statement)){
        $response["success"] = true;
        $response["question"] = $idquestion;
        $response["id"] = $id;
    }

    echo json_encode($response);
?>

输出

{"success":true,"idquestion":"1","question":"Top programming languages?","id":1}

第一个php文件背后的逻辑如何给我这些结果? 基本上,我希望LAST RESULTS能够工作而不弄乱代码。

欢迎任何意见。谢谢。

1 个答案:

答案 0 :(得分:2)

在查询中,您正在使用SELECT *,换句话说,是让Mysql按照它确定的顺序返回所有列。该顺序可能是定义列的顺序,但是基本上您无法控制列的顺序。

只要求您实际想要的列也更有效。

因此将查询更改为

$statement = mysqli_prepare($con, "SELECT idquestion, question, id 
                                    FROM question 
                                    WHERE idquestion=? AND category=?;");

现在您可以控制列的返回顺序。

所以当你运行这个

mysqli_stmt_bind_param($statement, "is", $idquestion,  $category);
mysqli_stmt_execute($statement);

mysqli_stmt_store_result($statement);
mysqli_stmt_bind_result($statement, $idquestion, $question, $id);

列值将进入正确的变量。