Я создаю веб-сервис для мобильного приложения на PHP, используя вызовы базы данных PDO. Код проблемы ниже:
// Prepare Stored Procedure Call
$query = "CALL " . $_GET['proc'] . '('.implode(', ', array_keys($paramArray)).')';
$stmt = $dbh->prepare($query);
$stmt->execute($paramArray);
$resultSets = array();
// Loop And Build Results into a JSON Array
do {
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
if($rows){
//echo json_encode($rows);
$resultSets[] = $rows;
}
} while ($stmt->nextRowset());
echo "Hello test.";
echo json_encode($resultSets);
while ($ stmt-> nextRowset ()); вызывает ошибку 500 на моем сервере, останавливая код.
С кодом выше я получаю 500 ошибок, я не получаю «Привет тест». эхо, чтобы напечатать, и я не получаю набор результатов JSON, и мое соединение не закрывается.
Если я удалю цикл do while, ошибки 500 нет, я получу первую строку моего результата
(потому что это не зацикливание) установить и «Hello тест» эхо с
соединение закрыто.
Если я размещу echo json_encode ($ resultSets); внутри цикла я получаю набор результатов JSON, но я получаю первый набор результатов целиком, а затем я получаю первый, а также второй полностью (по сути, возвращая каждую строку, когда она попадает в набор результатов. было предсказуемо, но цикл работает ..).
В любом другом примере PDO, который я рассмотрел, это цикл, который они используют для возврата данных. Я что-то здесь не так делаю?
Задача ещё не решена.
Других решений пока нет …