Как получить json, как показано ниже, в php api - PullRequest
0 голосов
/ 16 июня 2020

У меня есть таблица с 3 столбцами id, именем, возрастом, и у меня создано 4 записи. Я пытаюсь создать один GET API, чтобы я мог получить все эти данные и вернуть их как массив объектной модели

{
"status":"Success",
"data": [
         { "id":1, "name":"john", "age":34},
         { "id":2, "name":"doe", "age":32},
         { "id":3, "name":"mark", "age":24}
       ]
}

, но когда я использовал приведенный ниже код, я получаю null для данных

<?php
 header("Access-Control-Allow-Origin: *");
$servername = "localhost";
$database = "db";
$username = "root";
$password = "root";
//// Create connection
$conn = mysqli_connect($servername, $username, $password, $database);
// Check connection
if (!$conn) {
      die("Connection failed: " . mysqli_connect_error());
}


$query = "SELECT * FROM `user` WHERE career = 'software'";
$result = mysqli_query($conn, $query);
if (mysqli_num_rows($result) > 0) {
   // valid email
   $Subject=mysqli_query($con,$Query);
   $i=-1;

    while($row = mysqli_fetch_array($Subject))
    {
        $i++;
    $SubjectCode[$i]['id']=$row['id'];
    $SubjectCode[$i]['name']=$row['name'];
    $SubjectCode[$i]['age']=$row['age'];

    }
    echo '{
    "data":'.json_encode($SubjectCode).',
    "status":"success"
}';
    //echo json_encode($response);

}else{
    $response = array("status"=>"fail", "message"=>"No software engineer available");
    echo json_encode($response);
}

?>

Я новичок в PHP, может ли кто-нибудь помочь исправить мой код, чтобы я мог получить желаемый PHP API

Ответы [ 2 ]

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

Вы определяете соединение как $conn и используете его в запросе $query, затем позже используете несуществующие $con и $Query в другом запросе и используете этот результат $Subject, который равен false потому что запрос не удался. Выберите столбцы, которые вы хотите использовать в запросе, и используйте правильные переменные, и это намного проще:

$conn = mysqli_connect($servername, $username, $password, $database);
if (!$conn) {
      die("Connection failed: " . mysqli_connect_error());
}
$query = "SELECT `id`, `name`, `age` FROM `user` WHERE career = 'software'";
$result = mysqli_query($conn, $query);

if (mysqli_num_rows($result) > 0) {
    while($row[] = mysqli_fetch_assoc($result));
    $response = array("data" => $row, "status" => "success");
} else {
    $response = array("status" => "fail", "message" => "No software engineer available");
}
echo json_encode($response);

Обратите внимание, что вам нужно использовать mysqli_fetch_assoc или MYSQLI_ASSOC.

У вас будет видел Примечание: неопределенная переменная: con и Примечание: неопределенная переменная: запрос с:

error_reporting(E_ALL);
ini_set('display_errors', '1');
0 голосов
/ 16 июня 2020

Лог c в остальной части выглядит хорошо. Но управление переменной только один раз может быть немного более плавным.

<?php
// ... stuff

$output = []; // will be json_encoded at the end to a string

$query = "SELECT * FROM `user` WHERE career = 'software'";
$result = mysqli_query($conn, $query);
if (mysqli_num_rows($result) > 0) {
   // valid email
   $Subject=mysqli_query($con,$Query);

    $output['status'] = "success";
    $output['data'] = [];

    while($row = mysqli_fetch_array($Subject))
    {
        $output['data'][] = $row;
    }

}else{
    $output['status'] = "fail";
    $output['message'] = "No software engineer available";
}
echo json_encode($output);
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...