Содержимое страницы исчезает при использовании количества MySQL

#php #mysql

#php #mysql

Вопрос:

Я хочу, чтобы в моем меню была вкладка, в которой указано, сколько задач кто-то еще должен выполнить. Я пытаюсь сделать это вот так:

  public function getTasksCount() {
        $stmt = $this->db_connection->prepare("SELECT COUNT(*) FROM tasks WHERE for = ?");
        $user = $_POST['user_name'];
        $stmt->bind_param('s', $user);
        $stmt->execute();
        $stmt->bind_result($count);
        $stmt->store_result();
        if($stmt->num_rows > 0) {
            while($stmt->fetch()) {
                return "$count";
            }
        }
        $stmt->close();
    }
  

Но когда я называю это так <?php $adminfunctions->getTasksCount(); ?> , большая часть содержимого моих страниц исчезает. (См. Рисунок ниже.) Как вы можете видеть, вертикальное боковое меню все еще в порядке, но есть опции из верхнего меню, которые исчезли, и, конечно, содержимое в большом пробеле… Любая помощь?

Img:Материал исчезает...

Комментарии:

1. вы выполняете select count(*) запрос. он может возвращать только одну строку. таким образом, использование while() цикла для извлечения этой строки является основным симптомом карго-культового программирования. И если ваша страница умирает после определенного фрагмента кода, вы, вероятно, получили ошибку, которая убивает php, и параметры отладки отключены, предотвращая отображение сообщений об ошибках. включены ли error_reporting и display_errors? Они никогда не должны отключаться во время отладки / разработки.

2. @MarcB Да, они включены.

3. Если недостающее содержимое отправляется после getTasksCount() вызова is, я полагаю, что ваша функция выдает ошибку, и эта ошибка не отображается, возможно, из-за настройки директив display_errors и error_reporting в PHP.

4. Вероятно, вам следует проверить num_rows, ПРЕЖДЕ чем выполнять выборку / store_result. не уверен, что именно делает all store_result внутренне, но это может привести к удалению метаданных, таких как num_rows.

5. Вы также можете проверить источник страницы в своем браузере. Строка return "$count"; в вашем случае возвращает результат запроса, преобразованный в строку, возможно, в этой строке есть несколько зарезервированных символов HTML, которые затем влияют на отображение страницы.