Как вывести данные из связанной таблицы?

В php залез совсем недавно, поэтому навыков пока нет совсем. Объясните как это можно сделать, пожалуйста) Создал страницу авторизации, и страницу юзера где выводиться информация из таблицы 'users', мне нужно чтобы из связанной таблицы 'fond' выводилась дополнительная информация.

Есть таблица users, где у пользователя выводиться почта, имя, и тд. Есть таблица fond, где у юзера есть нужный столбец 'fond' - вот его и нужно выводить на страничке юзера. введите сюда описание изображениявведите сюда описание изображениявведите сюда описание изображениявведите сюда описание изображения


Ответы (3 шт):

Автор решения: илья Илья

Копай в сторону изменения sql запроса. Нужно запрос SELECT поменять на что то вроде этого SELECT * FROM users,fond WHERE то что там сейчас написано AND users.id = fond.id_users

Переменную $user в var_dump сделай посмотри как будет выглядеть массив с двумя таблицами и сразу присваивай значения в session. Это в кратце. Лучше потренируйся например в phpmyadmin в выполнении sql запросов, там более наглядно все увидишь.

→ Ссылка
Автор решения: Developer Vusal

Используй конструкцию LEFT JOIN

→ Ссылка
Автор решения: Jean-Claude

mysqli_fetch_assoc() не выполняют два раза, он как бы выбирает значение из результирующего набора $check_user, то есть если в ответе БД содержится 1 строка, то после первого mysqli_fetch_assoc() в $check_user будет пусто.

Похоже тебе нужен такой запрос

SELECT * FROM users LEFT JOIN fond ON users.id=fond.id_users
    WHERE email='[email protected]' AND password=123

Больше информации, что такое JOIN визуально показано здесь https://stackoverflow.com/questions/17946221/sql-join-and-different-types-of-joins

Пример работы запроса https://phpize.online/

CREATE TABLE IF NOT EXISTS `users` (
  `id` int NOT NULL AUTO_INCREMENT, 
  `email` varchar(255) NOT NULL, 
  `password` varchar(255) NOT NULL, 
  PRIMARY KEY (`id`)
) ENGINE = InnoDB DEFAULT CHARSET = latin1;

INSERT INTO `users` (`id`, `email`, `password`) 
VALUES 
  (1, '[email protected]', '123');

INSERT INTO `users` (`id`, `email`, `password`) 
VALUES 
  (2, '[email protected]', '123');

CREATE TABLE IF NOT EXISTS `fond` (
  `id` int NOT NULL AUTO_INCREMENT, 
  `id_users` int NOT NULL, 
  `summa` int NOT NULL, 
  PRIMARY KEY (`id`)
) ENGINE = InnoDB DEFAULT CHARSET = latin1;

INSERT INTO `fond` (`id`, `id_users`, `summa`) 
VALUES 
  (null, '1', '50000');

//php

$query = "SELECT * FROM users WHERE email='[email protected]' AND password=123";
$result = $mysqli->query($query);
$row = $result->fetch_assoc();
print_r($row);

$query = "SELECT * FROM users LEFT JOIN fond ON users.id=fond.id_users 
WHERE email='[email protected]' AND password=123";
$result = $mysqli->query($query);
$row = $result->fetch_assoc();
print_r($row);

$query = "SELECT * FROM users LEFT JOIN fond ON users.id=fond.id_users 
WHERE email='[email protected]' AND password=123";
$result = $mysqli->query($query);
$row = $result->fetch_assoc();
print_r($row);

//вывод

// Array
// (
//     [id] => 1
//     [email] => [email protected]
//     [password] => 123
// )
// Array
// (
//     [id] => 1
//     [email] => [email protected]
//     [password] => 123
//     [id_users] => 1
//     [summa] => 50000
// )
// Array
// (
//     [id] => 
//     [email] => [email protected]
//     [password] => 123
//     [id_users] => 
//     [summa] => 
// )
→ Ссылка