Я очень новичок в кодировании с MySQLi с использованием PHP. В настоящее время я пытаюсь закодировать простую программу назначения-пользователя с двумя таблицами в моей базе данных, в которые я уже ввел некоторые тестовые значения, как показано ниже.Какова наилучшая практика для выбора и отображения всех значений из таблицы «Назначение» с соответствующим идентификатором пользователя из таблицы «Пользователь»?
Я действительно стараюсь изо всех сил, но я все еще не знаю все о MySQLi, и я готов учиться. Я уже провел весь вчера, просматривая этот сайт, но я не сталкивался с предыдущими сообщениями, которые отвечали на мою проблему. Спасибо за любую помощь, которую вы можете предложить новичкам, таким как я.
То, что я работаю до сих пор:
- Я сохранил логин сеанса пользователя в другой сессии. Он отлично работает и возвращает правильную строку пользователя на основе имени пользователя.
- В
$_SESSION['appointment']
отображает назначение массив для конкретного пользователя с согласующего идентификатором пользователем
Проблемой
$_SESSION['appointment']
отображает только первый результат theappointment массива для конкретного пользователя с согласованием Идентификатор пользователя.- В моем случае, он отображает только
$_SESSION['appointment']['date']
=2016-12-20
для Боба Марли и не отображает все другие его назначения2016-12-31
и2016-12-29
, даже если он имеет то же самое соответствиеuserID = 3
Как отобразить все из связанные с назначением, если у них есть соответствие userID
в таблице «встречи»?
Мои таблицы базы данных:
'users' table:
userID (column 1) // username (column 2) // name (column 3)
1 // user1 // Bob Dylan
2 // user2 // John Lennon
3 // user3 // Bob Marley
-
'appointment' table
'appointmentID' (column 1) // userID (column 2) // date (column 3)
1 (appointmentID) // 1 (userID) // 2016-12-07
2 (appointmentID) // 2 (userID) // 2016-12-15
3 (appointmentID) // 3 (userID) // 2016-12-20
4 (appointmentID) // 3 (userID) // 2016-12-31
5 (appointmentID) // 3 (userID) // 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();}
}
Я уже пробовал это, и это дало мне ошибку: Fatal error: Call to undefined method mysqli_result :: fetch_all() ... – 5120bee
UPDA TE: после того, как тыкнул в интернете, я столкнулся с этим: «Переменная $ stmt имеет тип mysqli_stmt, а не mysqli_result.Класс mysqli_stmt не имеет метода «fetch_assoc()», определенного для него ». – 5120bee
Есть ли аналогичный или альтернативный метод fetch_all(), который я могу использовать? – 5120bee