@Durilka96

Как отдавать 404 ошибку если статей нет?

Суть такова что при обращении к базе данных то выводит статью, а если статей нет, то должен выводит 404 страницу
Применяю вот такую конструкцию
if (mysqli_num_rows($articles)<=0)
                            {   
             <?
                        header("Location: ../../../error/404.php");
                        
                <?php
                }


Выводит ошибку
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in S:\home\Blog\www\category\web\yakor-navigaciya-po-stranice-sajta\1.php on line 33
header(Location: ../../../error/404.php);
  • Вопрос задан
  • 101 просмотр
Решения вопроса 1
Если нужна HTTP-ошибка 404:
http_response_code(404);
exit;

Далее — исправлено.
Если нужна переадресация:
header('Location: …', true, 301);
exit;

или
header('Location: …', true, 307);
exit;
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Здесь возможны два варианта, в зависимости от того, что ожидается в переменной $articles

если список статей, то выкинуть mysqli_num_rows из условия и написать просто
if (!$articles)
    http_response_code(404);
    include("../../../error/404.php");
}


если же в $articles ожидается результат запроса, то разбираться с запросом. включить вывод ошибок mysqli и переписать зхапрос на подготовленные выражения

А главное - зарубить себе на носу что 404 через редирект не выводится.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы