Похоже, selecionar()
возвращает что-то, что не может быть повторено, если нет результатов, например, возможно null
или false
.(Помните, что если ваша функция не достигнет оператора return
, она вернет null
.)
Я думаю, что вашими двумя лучшими вариантами являются либо
Оберните foreach
в условное выражение, чтобы убедиться, что оно не пустое, прежде чем пытаться повторить его
if ($users) {
foreach($users as $user) {
$userId = $user['user_id'];
}
}
Изменить selecionar()
так, чтобы он всегда возвращал массив, а просто возвращалпустой массив, если запрос не дает результатов.
Я предпочитаю второй, лично.Вы можете сделать это, инициализируя любую переменную, в которую вы извлекаете результаты запроса в функции, в пустой массив, а затем возвращая эту переменную после того, как вы (возможно) заполнили ее данными.
Вот так:
function selecionar(string $sql): array
{
$result = [];
// code that executes a query and fetches results,
// adding the rows to $result if there are any
return $result;
}
Кроме того, вы должны выполнять эти запросы, используя подготовленные операторы.Вставлять ввод в строку SQL подобным образом небезопасно.