Я пытаюсь добавить запрос, который объединяет две таблицы, где их идентификаторы совпадают, и оттуда я хочу отобразить информацию из этих двух. (Первая таблица — это «sign_in», состоящая из основных учетных данных, а вторая — «учетная запись», содержащая личную информацию пользователя)
Пример ниже, кажется, отображает информацию только из первой строки, но не возвращает ничего дальше.
$id = $_SESSION['user_session'];
$information = $db_connection->prepare(
"SELECT sign_in.id, sign_in.username, sign_in.email_address, account.id, account.first_name, account.last_name
FROM sign_in
INNER JOIN account
WHERE sign_in.id = account.id");
$information->execute(array(
'id' => $id
));
$userRow = $information->fetch(PDO::FETCH_ASSOC);
С помощью fetchAll(PDO::FETCH_ASSOC)
возвращает все строки и указанную информацию; однако при попытке получить информацию об ассоциированной учетной записи (имя пользователя, адрес электронной почты и т. д.) ничего не возвращается.
Например, var_dump($userRow['first_name']); die;
возвращает NULL.
Любое объяснение или помощь с благодарностью.
Пример структуры базы данных:
После выполнения запроса:
Вы не используете $id
в вашем запросе. В приведенном ниже коде я использую обычный заполнитель ?
как они проще в использовании.
$id = $_SESSION['user_session'];
$information = $db_connection->prepare(
"SELECT sign_in.id, sign_in.username, sign_in.email_address, account.id, account.first_name, account.last_name
FROM sign_in
INNER JOIN account
WHERE sign_in.id = ?");
$information->execute(array(
'id' => $id
));
$userRow = $information->fetch(PDO::FETCH_ASSOC);
Других решений пока нет …