Пользовательский JSON ответ, если записи не найдены | PHP - PullRequest
0 голосов
/ 23 января 2020

У меня есть следующий PHP скрипт, который создает массив JSON ответ, который выглядит следующим образом:

[
    {
        "person": "PER1020",
        "occupation": "Manager",
        "name": "Josh"
    }
]

Ниже приведен сам скрипт:

<?php

if (isset($_POST['code']  )) {

    $stmt = $pdo->prepare( ' SELECT 
    `person`,
    `occupation`, 
    `name`
     WHERE 
    `code` = :code ' );

    $stmt->execute([

        'code' => $_POST['code']

    ]);


  $row = $stmt->fetchAll(PDO::FETCH_ASSOC);

  echo json_encode($row);

}


?>

Если в запросе выбора ничего не найдено, как я могу сделать ответ JSON:

[
    {
        "found": "no"
    }
]

ОБНОВЛЕНИЕ:

 $row = $stmt->fetchAll(PDO::FETCH_ASSOC);

if($stmt->rowcount() > 0){
      echo json_encode($row);
 }
else {
        echo json_encode($json['found'] = "no"); 
     }
 //echo json_encode([$row]);

}

Если есть записи, они пишут это правильно, но если есть нет записей, которые я не могу отобразить:

[
    {
        "found": "no"
    }
]

Ответы [ 2 ]

1 голос
/ 23 января 2020

В php вы можете использовать любую переменную в операторе if. И $row идеально подходит для этой цели.

Кроме того, вы действительно должны удалить все бесполезные скобки из своего кода

$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
if(!$data){
    $data = ["found" => "no"];
}
echo json_encode($data); 
0 голосов
/ 23 января 2020

Используйте функцию rowCount(), чтобы проверить, есть ли какие-либо результаты.

if($smtp->rowcount() > 0){
      // if there are results 
     $json['key'] = value ...
 }
else {
            $json = array(
                "found" => "no"
            );  
     }
 echo json_encode([$json]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...