2016-11-22 2 views
0

Я очень новичок в кодировании с 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();} 
} 

ответ

1

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

fetch_all()

editenote: becouse он оленья кожа есть драйверы для 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; 
} 
+0

Я уже пробовал это, и это дало мне ошибку: Fatal error: Call to undefined method mysqli_result :: fetch_all() ... – 5120bee

+0

UPDA TE: после того, как тыкнул в интернете, я столкнулся с этим: «Переменная $ stmt имеет тип mysqli_stmt, а не mysqli_result.Класс mysqli_stmt не имеет метода «fetch_assoc()», определенного для него ». – 5120bee

+0

Есть ли аналогичный или альтернативный метод fetch_all(), который я могу использовать? – 5120bee

Смежные вопросы