Как преобразовать 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