Какова наилучшая практика для выбора и отображения всех значений из таблицы «Назначение» с соответствующим идентификатором пользователя из таблицы «Пользователь»?

Я очень новичок в программировании на MySQLi с использованием PHP. В настоящее время я пытаюсь закодировать простое приложение для назначения встречи с двумя таблицами в моей базе данных, в которые я уже ввел некоторые тестовые значения, как показано ниже.

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

Над чем я работаю до сих пор:

  • Я сохранил логин пользователя SESSION в другой сессии. Он работает нормально и извлекает правильную строку пользователя, основываясь на имени пользователя.
  • $_SESSION['appointment'] отображает массив встреч для конкретного пользователя с соответствующим идентификатором пользователя

Эта проблема

  • $_SESSION['appointment'] ТОЛЬКО отображает первый результат массива назначений для конкретного пользователя с соответствующим идентификатором пользователя.
  • В моем случае он отображает только $_SESSION['appointment']['date'] знак равно 2016-12-20 для Боба Марли и не отображает все его другие назначения 2016-12-31 а также 2016-12-29 даже если оно имеет такое же соответствие userID = 3

Как отобразить все связанные даты встреч пользователя, если они совпадают userID в таблице «назначение»?

Мои таблицы базы данных:

таблица ‘users’:

userID (столбец 1) // имя пользователя (столбец 2) // имя (столбец 3)

1 // user1 // Боб Дилан

2 // user2 // Джон Леннон

3 // user3 // Боб Марли

таблица «назначение»

‘destinationID’ (столбец 1) // userID (столбец 2) // дата (столбец 3)

1 (назначение ID) // 1 (идентификатор пользователя) // 2016-12-07

2 (назначение ID) // 2 (идентификатор пользователя) // 2016-12-15

3 (назначение ID) // 3 (идентификатор пользователя) // 2016-12-20

4 (назначение ID) // 3 (идентификатор пользователя) // 2016-12-31

5 (назначение ID) // 3 (идентификатор пользователя) // 2016-12-29

Мои СЕССИИ:

 //Displays the array of the user
$_SESSION['profile'] = displayProfile($_SESSION['user']);

//Displays the array of the appointment based on the matching userID
$_SESSION['appointment'] = displayAppointment($_SESSION['profile']['userID']);

Мои функции MySQLi:

 function displayProfile($username)
{
global $ db_con; //my database connection

$query = 'SELECT * FROM users WHERE username=\''.mysqli_escape_string($db_con, $username).'\'';
$result = $db_con-> query($query);

//This fetches the associative array for the user row
//(i.e. $_SESSION['profile']['userID'] outputs the userID of the user logged into the system
if ($result->num_rows) { return $result->fetch_assoc();}
}

//////////////////////////////

function displayAppointment($userID)
{
global $ db_con; //my database connection

//This passes the current logged on user's userID into the query.
//For example, if Bob Marley was currently logged on, the $userID that will be passed is userID = 3.
$query = 'SELECT * FROM appointment WHERE userID='.$userID;
$result = $db_con-> query($query);

//This fetches the associative array for the appointment row with the correct matching userID
//(i.e. $_SESSION['profile']['userID'] for Bob Marley is '3'
if ($result->num_rows) { return $result->fetch_assoc();}
}

0

Решение

так что вам нужно, чтобы вернуть все из функции прямо тогда вы должны использовать

fetch_all()

editenote: потому что у него нет драйверов для fetch_all

function displayAppointment($userID)
{
global $ db_con; //my database connection

//This passes the current logged on user's userID into the query.
//For example, if Bob Marley was currently logged on, the $userID that will be passed is userID = 3.
$query = 'SELECT * FROM appointment WHERE userID='.$userID;
$result = $db_con-> query($query);

//This fetches the associative array for the appointment row with the correct matching userID
//(i.e. $_SESSION['profile']['userID'] for Bob Marley is '3'
$resultout=array();
while ($row = mysqli_fetch_assoc($result)) {
array_push($resultout, $row);
}
return $resultout;
}
1

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

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