Люди добрые, завис на простейшей задаче.
Делаю select запрос к БД с параметрами. Далее вывожу полученный результат в виде выпадающего списка. Но с некоторой долей вероятности - результат может быть пустым. В этом случае mysqli_fetch_assoc соответственно - ругается. Туплю - не знаю куда поставить проверку на то, что из БД что-то было получено.
Немного рабочего кода(спасибо Алексей Шиманский за напоминание):
<?
$sql = $db->query('SELECT * FROM guests2order WHERE oid="'.$_SESSION['oid'].'"');
$row_num = mysqli_num_rows($sql);
if($row_num != '0'){
echo '<select>';
while($guests = mysqli_fetch_assoc($sql)) {
echo '<option value="'.$guests['id'].'">'.$guests['name'].'</option>';
}
}
echo '</select>';
?>
Соответственно хочется, что бы если из БД ничего не получено - <select>...</select> - вообще не выводился.
(Если проверять на пустоту $sql - то оно равно TRUE, если был вообще получен ответ от БД - даже пустой.)
<?php
$sql = $db->query('SELECT * FROM guests2order WHERE oid="'.$_SESSION['oid'].'"');
$hasValues = false;
if($guests = mysqli_fetch_assoc($sql)){
echo '<select>';
echo '<option value="'.$guests['id'].'">'.$guests['name'].'</option>';
$hasValues = true;
}
while($guests = mysqli_fetch_assoc($sql)) {
echo '<option value="'.$guests['id'].'">'.$guests['name'].'</option>';
}
if($hasValues) echo '</select>';
1) Проверка if(!empty($guests)) не нужна, поскольку mysqli_fetch_assoc возвращает либо массив с данными, либо false, при котором цикл дальше не пойдет
2) Старайтесь никогда не использовать подобный способ создания SQL-запроса. Используйте подготовленные выражения
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости