Как сохранить несколько запросов MySQL в массиве json? - PullRequest
0 голосов
/ 18 июня 2020

У меня есть веб-сайт с методом ajax POST, который отправляет идентификатор данных в файл php. В соответствии с полученным идентификатором из базы данных принимаются соответствующие 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);
}

Используя метод MySQL INSTR, я анализирую все запросы, содержащие id, в массив $data, а затем кодирую его как json, но почему-то только последний запрос в таблице отправляется обратно в файл html. Как можно было бы добавить несколько запросов в массив json вместо одного? Спасибо!

1 Ответ

0 голосов
/ 18 июня 2020

Чтобы создать двумерный массив из ваших результатов, вы должны добавить массив к массиву:

  $data=[]; // <-- create empty array to hold the results      

   while($row = mysqli_fetch_array($result)){
     //NOW push all elements in an array into $data:

     $data[]= // <-- push new value in $data = array
       [
        'num' => $i,
        'idusr' => $row['idusr'],
        'name' => $row['name'],
        'surname' => $row['surname']
       ];
     $i += 1;
    }


    echo json_encode($data);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...