@yberpoc

Почему не работает приватный метод в PHP?

Есть класс "StudentsList", где прописаны методы с разными запросами. Существует метод, который из БД выбирает всех студентов, также с помощью CONCAT (в sql запросе) я объединяю из другой таблицы название классов студентов, и мне приходит массив с данными студентов и классов. Далее я делаю функцию mysqli_fetch_assoc для этого запроса. После я объединяю массив по ключу, чтобы на выходе был массив: [11 А] => [[0] Вася Пупкин], [10 В] => [[0] Вася Пупкин]] и т. д.
Для этого я раньше использовал отдельную функцию и она у меня прекрасно работала. После я решил сделать всё это на ООП, и эта функция не работает, и не могу понять почему.

Это страница с классом:
<?php
class StudentsList {
    private $dataBase;

    public function __construct($dataBase) {
        $this->dataBase = $dataBase;
    }

    public function selectAllStudents() {
        $query = $this->dataBase->getQuery("SELECT SId, SLastName, SFirstName, SMidName, SBirthDate, CONCAT(classes.CLevel, ' ', classes.CLetter) as CClass FROM `students` INNER JOIN classes ON students.CId = classes.CId");
        return $this->groupArray($query);
    }
    public function selectStudentsByMinBirthDate() {
        $query = $this->dataBase->getQuery("SELECT SId, SLastName, SFirstName, SMidName, SBirthDate, CONCAT(classes.CLevel, ' ', classes.CLetter) as CClass FROM `students` INNER JOIN classes ON students.CId = classes.CId WHERE SBirthDate = (SELECT MAX(SBirthDate) FROM students)");
        return $this->groupArray($query);
    }

    private function groupArray($query) {
        $resultQueryStudent = [];
        while ($queryStudent = mysqli_fetch_assoc($query)) {
            $resultQueryStudent[] = $queryStudent;
        }
        return $this->groupArrayByKey('CClass', $resultQueryStudent);
    }

       private function groupArrayByKey($key, $array) {
           $newArray = [];
           foreach ($array as $k => $value) {
               $newArray[$value[$key]][] = $array[$k];
           }
           return $newArray;
       }

    public function selectStudentByClass() {
        $queryStudentByClass = $this->dataBase->getQuery("SELECT * FROM students WHERE CId = 2");
        $queryStudentsCount = mysqli_fetch_all($queryStudentByClass);

        return $queryStudentsCount;
    }
    public function selectStudentByMonth() {
        $queryStudent = $this->dataBase->getQuery("SELECT * FROM `students` WHERE MONTH(SBirthDate) = 7");
        $queryStudents = mysqli_fetch_all($queryStudent);

        return $queryStudents;
    }
}


Это страница, куда всё импортируется:
<?php
    session_start();
    require_once 'config/connect.php';
    require_once "options/StudentsList.php";
    require_once "options/ClassesList.php";
    require_once 'options/GroupArrayByKey.php';


    //Работа с таблицой "Classes"
    $classesList = new ClassesList($db);
    $resultAllClasses = $classesList->selectAllClasses();



    //Работа с таблицой "Students"
    $studentsList = new StudentsList($db);

    $queryAllStudents = $studentsList->selectAllStudents();

    $queryByMinBirthDate = $studentsList->selectStudentsByMinBirthDate();

    $queryStudentsByClass = $studentsList->selectStudentByClass();

    $queryStudentsByMonth = $studentsList->selectStudentByMonth();

require_once 'views/page.php';
  • Вопрос задан
  • 83 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы