Почему ответ массива не попадает в JSON с PHP MySQL API - PullRequest
0 голосов
/ 26 февраля 2020

Я разрабатываю API с базой данных PHP и MySQL, в которой он получает параметры POST и отправляет ответ в виде JSON. Я использую запрос и соответствующие параметры, которые должны возвращать массив из 3 строк, но он не возвращает ни одной строки. Вот записи, которые должны быть возвращены

+--------+-------------------+------------+------+----------+
| rollno |        sub        |    date    | year | presenty |
+--------+-------------------+------------+------+----------+
|     12 | Maths             | 02-10-2019 |    2 | p        |
|     12 | Physics           | 02-10-2019 |    2 | p        |
|     12 | Computer Networks | 02-10-2019 |    2 | a        |
+--------+-------------------+------------+------+----------+

Код для получения этого выглядит следующим образом:

$response = array();
if(isset($_POST['year']) && isset($_POST['rollno']) && isset($_POST['date'])){
    $year = $_POST['year'];
    $rollno = $_POST['rollno'];
    $date_tmp = date_create($_POST['date']);
    $date = date_format($date_tmp,'d-m-Y');
    $att = array();
    $fetchatt = $conn->query("SELECT * FROM attendance WHERE year=".$year." AND rollno=".$rollno." AND date=".$date);
    while($row = $fetchatt->fetch_assoc()){
        $att[] = array('sub'=>$row['sub'],
                      'presenty'=>$row['presenty']);
        $response['att'] = $att;
    }
    $response['error'] = false;
    $response['message'] = "Retrieval Successful";
}
echo json_encode($response);

Я отправляю POST параметров (с помощью AR C REST-клиент chrome расширение) следующим образом:

rollno: 12
year: 2
date: 02-10-2019

В ответ я получаю только это

{"error":false,"message":"Retrieval Successful"}

; ответ также должен содержать массив соответствующих записей выше

Ответы [ 2 ]

0 голосов
/ 26 февраля 2020

Хорошей практикой является проверка того, как выглядят ваши SQL запросы, особенно если они зависят от ввода пользователя. Попробуйте записать запросы в файл, а затем открыть этот файл и проверить запросы, используя MySQL Workbench или PHPMyAdmin, или даже вывести их на страницу (только в средах тестирования). Это предотвращает явные синтаксические ошибки в вашем коде.

Также я предлагаю вам включить ведение журнала ошибок для вашего сайта

0 голосов
/ 26 февраля 2020

Попробуйте это - $fetchatt = $conn->query("SELECT * FROM attendance WHERE year=".$year." AND rollno=".$rollno." AND date='".$date."');.

$date должно быть в одинарных кавычках.

...