Обучение/Помощь новичкам | inner join
Тема закрыта by
SNEG
Объединил 2 таблицы ,как выборку прописывать в select, чтобы в массиве вывести $user['username']; ?
________
посл. ред. 13.08.2023 в 22:43; всего 10 раз(а); by SNEG
sql
create table `_sessions` (
`user_id` int unsigned not null,
`ip_address` varchar(15) not null
) engine=myisam default charset=utf8 auto_increment=1;
create table `_users` (
`user_id` int unsigned not null primary key auto_increment,
`username` varchar(32) not null unique
) engine=myisam default charset=utf8 auto_increment=1;
SELECT FROM `".PREFIX."_sessions` AS `s` INNER JOIN `".PREFIX."_users` AS `u` ON `s.user_id` = `u.user_id` WHERE `key` = '".esc($_COOKIE[COOKIE_PREFIX.'_session'])."'"________
посл. ред. 13.08.2023 в 22:43; всего 10 раз(а); by SNEG
Чтобы выбрать данные из объединенных таблиц и вывести username в массиве, вам нужно дополнить ваш запрос SQL с указанием столбцов, которые вы хотите выбрать. В данном случае, вы хотите выбрать столбец username из таблицы _users. Вот как может выглядеть ваш запрос:
Обратите внимание, что в вашем исходном коде есть использование esc($_COOKIE[COOKIE_PREFIX.'_session']), предполагаю, что это некая функция, которая выполняет экранирование или защиту от инъекций. Убедитесь, что вы используете правильный способ защиты от SQL-инъекций в своем коде.
Если вы хотите использовать результаты этого запроса в PHP для создания массива, то вы можете сделать это следующим образом:
Замените $connection на вашу актуальную переменную соединения с базой данных и убедитесь, что вы обрабатываете ошибки и подключаетесь к базе данных правильным образом.
sql
SELECT u.username
FROM `_sessions` AS s
INNER JOIN `_users` AS u ON s.user_id = u.user_id
WHERE s.key = '" . esc($_COOKIE[COOKIE_PREFIX.'_session']) . "'";Обратите внимание, что в вашем исходном коде есть использование esc($_COOKIE[COOKIE_PREFIX.'_session']), предполагаю, что это некая функция, которая выполняет экранирование или защиту от инъекций. Убедитесь, что вы используете правильный способ защиты от SQL-инъекций в своем коде.
Если вы хотите использовать результаты этого запроса в PHP для создания массива, то вы можете сделать это следующим образом:
php
// Выполняем запрос к базе данных (ваш код для подключения к БД здесь)
$result = mysqli_query($connection, $sql);
// Создаем массив для хранения данных
$usernames = array();
// Извлекаем данные и добавляем в массив
while ($row = mysqli_fetch_assoc($result)) {
$usernames[] = $row['username'];
}
// Теперь у вас есть массив $usernames с именами пользователейЗамените $connection на вашу актуальную переменную соединения с базой данных и убедитесь, что вы обрабатываете ошибки и подключаетесь к базе данных правильным образом.
Чтобы выбрать данные из объединенных таблиц и вывести username в массиве, вам нужно дополнить ваш запрос SQL с указанием столбцов, которые вы хотите выбрать. В данном случае, вы хотите выбрать столбец username из таблицы _users. Вот как может выглядеть ваш запрос:
sql
SELECT u.username
FROM `_sessions` AS s
INNER JOIN `_users` AS u ON s.user_id = u.user_id
WHERE s.key = '" . esc($_COOKIE[COOKIE_PREFIX.'_session']) . "'";Обратите внимание, что в вашем исходном коде есть использование esc($_COOKIE[COOKIE_PREFIX.'_session']), предполагаю, что это некая функция, которая выполняет экранирование или защиту от инъекций. Убедитесь, что вы используете правильный способ защиты от SQL-инъекций в своем коде.
Если вы хотите использовать результаты этого запроса в PHP для создания массива, то вы можете сделать это следующим образом:
php
// Выполняем запрос к базе данных (ваш код для подключения к БД здесь)
$result = mysqli_query($connection, $sql);
// Создаем массив для хранения данных
$usernames = array();
// Извлекаем данные и добавляем в массив
while ($row = mysqli_fetch_assoc($result)) {
$usernames[] = $row['username'];
}
// Теперь у вас есть массив $usernames с именами пользователейЗамените $connection на вашу актуальную переменную соединения с базой данных и убедитесь, что вы обрабатываете ошибки и подключаетесь к базе данных правильным образом.
Не нужно переименовывать u.username as username ?
sql
SELECT u.username AS username
FROM `_sessions` AS s
INNER JOIN `_users` AS u ON s.user_id = u.user_id
WHERE s.key = '" . esc($_COOKIE[COOKIE_PREFIX.'_session']) . "'";И в PHP, когда вы извлекаете данные, вы будете обращаться к алиасу:
php
// Выполняем запрос к базе данных (ваш код для подключения к БД здесь)
$result = mysqli_query($connection, $sql);
// Создаем массив для хранения данных
$usernames = array();
// Извлекаем данные и добавляем в массив
while ($row = mysqli_fetch_assoc($result)) {
$usernames[] = $row['username'];
}
// Теперь у вас есть массив $usernames с именами пользователей________
посл. ред. 13.08.2023 в 22:51; всего 1 раз(а); by SNEG
sql
SELECT u.user_id, u.username
FROM `_sessions` AS s
INNER JOIN `_users` AS u ON s.user_id = u.user_id
WHERE s.key = '" . esc($_COOKIE[COOKIE_PREFIX.'_session']) . "'";В этом запросе используется u.user_id для обращения к user_id из таблицы _users, которая соответствует значению user_id из таблицы _sessions.
________
посл. ред. 14.08.2023 в 00:03; всего 3 раз(а); by SNEG
sql
SELECT s.user_id, u.username AS username
FROM `_sessions` AS s
INNER JOIN `_users` AS u ON s.user_id = u.user_id
WHERE s.key = '" . esc($_COOKIE[COOKIE_PREFIX.'_session']) . "'";А в PHP, когда вы извлекаете данные, вы будете обращаться к столбцу user_id без указания таблицы:
php
// Выполняем запрос к базе данных (ваш код для подключения к БД здесь)
$result = mysqli_query($connection, $sql);
// Создаем массив для хранения данных
$user = mysqli_fetch_assoc($result);
// Теперь у вас есть доступ к $user['user_id'] и $user['username']Таким образом, если столбцы user_id и username есть и в _sessions и в _users, и значения user_id совпадают, вы можете использовать такой запрос и обращаться к столбцам без указания таблицы.