Эхо-содержимое таблиц JOIN SQL с MySQLi

Я работаю над системой, и этот модуль должен отображать содержимое базы данных.

Он работал отлично, пока я не добавил несколько операторов JOIN.

Я проверил и протестировал код SQL, и он отлично работает. Что не работает, так это та часть, где я повторяю содержимое таблицы JOINed.

Мой код выглядит так:

$query = "SELECT reg_students.*, courses.*
FROM reg_students
JOIN courses ON reg_students.course_id = courses.course_id
WHERE reg_students.user_id = '".$user_id."'";

$result = mysqli_query($conn, $query);
if (mysqli_fetch_array($result) > 0) {
while ($row = mysqli_fetch_array($result)) {
echo $row["course_name"];
echo $row["course_id"];

Course_name и course_id не отображают и не выдают никаких сообщений об ошибках.


ОБНОВЛЕНИЕ: мне действительно нужно увеличить сложность запроса, присоединившись к большему количеству таблиц и изменив выбранные столбцы. Мне нужно присоединиться к этим таблицам:

tutors который имеет столбцы: tutor_id, t_fname, t_othernames, email, phone number
faculty который имеет столбцы: faculty_id, faculty_name, faculty_code
courses который имеет столбцы: course_id, course_code, course_name, tutor_id, faculty_id

Я хочу присоединиться к этим таблицам reg_students таблица в моем исходном запросе, так что я могу фильтровать по $user_id и я хочу отобразить: course_name, t_fname, t_othernames, email, faculty_name

1

Решение

Я не могу себе представить, что user_info Таблица полезна для присоединения, поэтому я удаляю ее как разумное предположение. Я также предполагаю, что все желаемые столбцы исходят из courses таблица, поэтому я назначаю имя таблицы с именами столбцов в SELECT.

Для ясности читателя я люблю использовать INNER JOIN вместо JOIN, (они один и тот же зверь)

Кастинг $user_id поскольку целое число — это просто лучшая практика, которую я добавляю, на тот случай, если эта переменная подается введенным пользователем / ненадежным вводом.

Вы посчитаете количество строк в наборе результатов с mysqli_num_rows(),

Если вы хотите получить доступ только к данным набора результатов с помощью ассоциативных ключей, создайте набор результатов с помощью mysqli_fetch_assoc(),

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

Не проверенный код:

$query = "SELECT c.course_name, t.t_fname, t.t_othernames, t.email, f.faculty_name
FROM reg_students r
INNER JOIN courses c ON r.course_id = c.course_id
INNER JOIN faculty f ON c.faculty_id = f.faculty_id
INNER JOIN tutors t ON c.tutor_id = t.tutor_id
WHERE r.user_id = " . (int)$user_id;
if (!$result = mysqli_query($conn, $query)) {
echo "Syntax Error";
} elseif (!mysqli_num_rows($result)) {
echo "No Qualifying Rows";
} else {
while ($row = mysqli_fetch_assoc($result)) {
echo "{$row["course_name"]}<br>";
echo "{$row["t_fname"]}<br>";
echo "{$row["t_othernames"]}<br>";
echo "{$row["email"]}<br>";
echo "{$row["faculty_name"]}<br><br>";
}
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]