Есть класс "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';