Как преобразовать PDOStatement в JSON и распечатать его? - PullRequest
0 голосов
/ 24 ноября 2018

Как преобразовать PDOStatement в JSON и распечатать его?Я реализую следующую функцию в PHP, с помощью которой я хочу вернуть массив в зависимости от идентификатора, но когда я конвертирую массив в json и печатаю его, результат не появляется.

public static function getAllDebtorsByUser(int $id) : array {
    $query = "SELECT id_debtor Id, name_debtor Name, address_debtor Address, phone_debtor Phone from debtors where user_debtor = :i;";
    $sth = Connection::select($query, ["i" => $id]); //return a PDOStatement
    if($sth->rowCount() > 0) {
        while($row = $sth->fetch(PDO::FETCH_ASSOC)) {
            $debtors[] = $row;
        }
        return $debtors;
    } else
        return [];
}

Я использовалследующий код для преобразования из массива в JSON.Он не помечает меня как ошибки, но не показывает результат, если я не хочу показывать один столбец вместо 3.

Пример

Код для печати:

echo json_encode (Debtor::getAllDebtorsByUser (1)); // The function is inside a class called Debtor

Запрос:

SELECT id_debtor Id from debtors where user_debtor =: i;

Результат:

[
    {
       "Id": "1"
    },
    {
       "Id": "2"
    }
]

Наличие трех нужных мне столбцов и использование функции PHP * print_r * показывает мне правильный результат, но мне нужно, чтобы JSON был виден.

Пример:

Код для печати:

print_r (Debtor::getAllDebtorsByUser (1));

Запрос:

SELECT id_debtor Id, name_debtor Name, address_debtor Address, phone_debtor Phone from debtors where user_debtor =: i;

Результат:

Array
    (
        [0] => Array
            (
                [Id] => 1
                [Name] => Debtor 1
                [Address] => Dir 1
                [Phone] => Tel 1
            )
    
        [1] => Array
            (
                [Id] => 2
                [Name] => Debtor 2
                [Address] => Dir 2
                [Phone] => Tel 2
            )
    
    )

Поэтому использование echo json_encode () для печати не работает, если в запросе только один столбец.

Он также не работаетуказание глубины для json_encode ()

** Версии программного обеспечения **

PHP: 7.2.12

MySQL: 5.7.24

XAMPP: 3.2.2

SO: Windows 10

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