PHP: Не работает конструкция if else

160
19 июня 2018, 02:40

Вот такой простой код для реализации поиска. Всё нормально работает, кроме одного: не выводит сообщение, при отсутствии в БД информации («По вашему запросу ничего не найдено»). В чём может быть проблема?

Вот моё поделие:

<?php
// Поиск статей
$search = $_GET['search'];
echo '
     <form method="GET">
          <input type="text" name="search" required="required" placeholder="Поиск" />
          <input type="submit" name="submit" value="Найти" />
     </form>
';
$db = new SQLite3(DB_NAME);
$search = trim($search);
$search = strip_tags($search);
$results = $db->query("SELECT * FROM articles WHERE title LIKE '%$search%' OR content LIKE '%$search%'");
$numRows = count ($results);
if(empty($search)) {
     echo articles();
}
elseif(strlen($search) <= 3) {
     echo 'Слишком короткий термин (не менее 3 символов)';
}
elseif($numRows > 0) {
    while ($row = $results->fetchArray()) {     
         echo 'По запросу ' . $search . ' найдено ' . $numRows . ' совпадений.<br />id: ' . $row['id'] . '<br /> Дата и время: ' . $row['datetime'] . '<br /> Заголовок: ' . $row['title'] . '<br /> Категория: ' . $row['category'] . '<br /> Контент: ' . $row['content'] . '<br />';
    }
}
else {
     echo 'По вашему запросу ничего не найдено';
}
$db->close();
?>
Answer 1

Потому что $db->query(..) возвращает объект , класса SQLite3Result . А в php функция count корректно применяется для объектов, только имеющих интерфейс Countable (SQLite3Result не имплементирует этот интерфейс) . Заметка по count c php.net:

Возвращает количество элементов в array_or_countable. Если параметр не является массивом или объектом, реализующим интерфейс Countable, будет возвращена 1

При анализе ошибок надо знать, что магии не бывает, и условный оператор не может не работать.

READ ALSO
MySQL обратная связь

MySQL обратная связь

нужно, заполнив форму обратной связи,занести в бд и отослать информацию на почтупомогите найти ошибку

224
Не понимаю в чем ошибка!

Не понимаю в чем ошибка!

Parse error: syntax error, unexpected end of file in C:\OSPanel\domains\Crypto\includes\articlephp on line 8

215
Вывод данных из MySQL в CSV

Вывод данных из MySQL в CSV

Пыталась сделать вывод данных в CSV-файл, но данные выводятся в одну ячейкуВопрос: как сделать так, чтобы данные выводились в отдельные ячейки?...

209
MPDF не работает, конвертор из HTML в PDF

MPDF не работает, конвертор из HTML в PDF

Решил установить новую версию MPDF, раньше я тупо подключал файл include("MPDF56/mpdfphp"); и все работало, сейчас в мануэле пишут это

174