如何将多个 MySQL 查询保存在一个 json 数组中?

我有一个带有 ajax 'POST' 方法的网站,该方法将数据 ID 发送到 php 文件。根据收到的 id,从数据库接收适当的 MySQL 查询并将其放入 JSON 数组。


存档.php:


if(isset($_POST["id"])){ //data received from the html POST method 


    $id = $_POST["id"];

    if(is_numeric($id) == TRUE){

        $query="SELECT * FROM TestDataBase.usr WHERE idusr =" . $id;

        $result=mysqli_query($conn, $query);

    }else if(is_numeric($id) == FALSE && $id != ""){

        $query="SELECT * FROM TestDataBase.usr WHERE INSTR(name,'" . $id ."')";

        $result=mysqli_query($conn, $query);

    }

    $i=0;

        while($row = mysqli_fetch_array($result)){

            $data["num"] = $i;


            $i += 1;

            $data["idusr"] = $row["idusr"];

            $data["name"] = $row["name"];

            $data["surname"] = $row["surname"];

        }



    echo json_encode($data);

}

使用 MySQLINSTR方法,我将所有包含的查询解析id为一个$data数组,然后将其编码为 json,但由于某种原因,只有表中的最后一个查询被发送回 html 文件。如何将多个查询而不是一个添加到 json 数组中?谢谢!


慕娘9325324
浏览 142回答 1
1回答

智慧大石

要根据结果创建二维数组,您必须将数组添加到数组:&nbsp; $data=[]; // <-- create empty array to hold the results&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;while($row = mysqli_fetch_array($result)){&nbsp; &nbsp; &nbsp;//NOW push all elements in an array into $data:&nbsp; &nbsp; &nbsp;$data[]= // <-- push new value in $data = array&nbsp; &nbsp; &nbsp; &nbsp;[&nbsp; &nbsp; &nbsp; &nbsp; 'num' => $i,&nbsp; &nbsp; &nbsp; &nbsp; 'idusr' => $row['idusr'],&nbsp; &nbsp; &nbsp; &nbsp; 'name' => $row['name'],&nbsp; &nbsp; &nbsp; &nbsp; 'surname' => $row['surname']&nbsp; &nbsp; &nbsp; &nbsp;];&nbsp; &nbsp; &nbsp;$i += 1;&nbsp; &nbsp; }&nbsp; &nbsp; echo json_encode($data);
打开App,查看更多内容
随时随地看视频慕课网APP