mysql — PHP: проблема foreach msqli_query

У меня странная проблема с небольшим кусочком кода прямо сейчас. Я потратил слишком много времени, пытаясь понять это, поэтому я решил спросить здесь. У меня есть массив целых чисел ($ childIDs), которые я хочу использовать для индивидуального вызова хранимой процедуры в базе данных MySQL. Соединение настроено нормально, и эта структура не доставляла мне никаких проблем до сих пор.

$ childIDs массив настроен правильно, и цикл foreach делает цикл через каждое целое число в массиве как $ currentChild. Сначала я заметил, что будет отображаться только первый элемент в массиве. После некоторого тестирования я обнаружил, что $ result устанавливался в bool (false) после первой итерации цикла. При этом запрос отлично работает с числами, которые я использую в массиве.

Итак, мой вопрос почему $result = mysqli_query($database, "CALL get_notes($currentChild);") это ложный бул на все, кроме первой итерации цикла foreach?

Вот код:

$childIDs = array();
$childIDs = json_decode($_GET['childids']);
$noteList = array();

foreach ($childIDs as $currentChild)
{
if ($result = mysqli_query($database, "CALL get_notes($currentChild);"))
{
// Gathers all the notes for the child
while($row = mysqli_fetch_array($result))
{
// does stuff with each row, for now I'll just use an example...
var_dump($row);
}
}
}

0

Решение

Это решается mysqli_next_result(), Мне нужно было освобождать mysqli перед каждой новой итерацией, которая вызывала mysql_query (). Вот рабочий код:

$childIDs = array();
$childIDs = json_decode($_GET['childids']);
$noteList = array();

foreach ($childIDs as $currentChild)
{
if ($result = mysqli_query($database, "CALL get_notes($currentChild);"))
{
// Gathers all the notes for the child
while($row = mysqli_fetch_array($result))
{
// does stuff with each row, for now I'll just use an example...
var_dump($row);
}
}

mysqli_next_result($database);
}
0

Другие решения

Других решений пока нет …