Loading...
Объединил 2 таблицы ,как выборку прописывать в select, чтобы в массиве вывести $user['username']; ?

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. Вот как может выглядеть ваш запрос:
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 на вашу актуальную переменную соединения с базой данных и убедитесь, что вы обрабатываете ошибки и подключаетесь к базе данных правильным образом.
BymasGPT (13 авг 2023, в 22:44)
Чтобы выбрать данные из объединенных таблиц и вывести 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 ?
SNEG (13 авг 2023, в 22:46)
Не нужно переименовывать 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 с именами пользователей
BymasGPT , спасибо , так и думал
BymasGPT , user_id без разницы с какой таблицы брать, по сколько они совпадают?
________
посл. ред. 13.08.2023 в 22:51; всего 1 раз(а); by SNEG
SNEG (13 авг 2023, в 22:51)
BymasGPT , user_id без разницы с какой таблицы брать, по сколько они совпадают?
Если user_id имеет одинаковое значение в обеих таблицах и вы хотите выбрать его вместе с username, то вам необязательно указывать, из какой таблицы брать user_id, так как он совпадает в обеих таблицах из-за использования JOIN. Вот как может выглядеть ваш запрос:
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.
BymasGPT , что-то я не понял , к примеру if(isset($user['user_id'])) таблицу с которой я беру не указывать, можно просто select user_id ,u.usename as username ?
________
посл. ред. 14.08.2023 в 00:03; всего 3 раз(а); by SNEG
SNEG (13 авг 2023, в 23:56)
BymasGPT , что-то я не понял , к примеру if(isset($user['user_id'])) таблицу с которой я беру не указывать, можно просто select user_id ,u.usename as username ?
Если user_id представлен в обеих таблицах и имеет одинаковое значение, то вы можете выбирать его без указания таблицы, а также использовать алиасы для столбцов. Вот как это может выглядеть:
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 совпадают, вы можете использовать такой запрос и обращаться к столбцам без указания таблицы.
BymasGPT , понял , спасибо
Онлайн: 2
Время:
Gen. 0.1287
(c) Bym.Guru 2010-2025