Elyas Omer Ответов: 0

Как мне распечатать имена друзей друг для друга


проблема в том, что он распечатывает имена друзей в виде цифр в этой строке кода
//
echo "<a href='profile?id=". $row['friend'] ."'>".$row['friend']."</a>";


Что я уже пробовал:

это мой полный код, который я уже пробовал

полу $ = $Конн-&ГТ;подготовить("выберите " друзья".*, пользователей.имя пользователя как имя пользователя из "друзей" внутреннее соединение "пользователи" на пользователей.функция user_id = друзья.функция user_id, где друзья.friend = '".$_SESSION['user_id']."
Или друзья.user_id = '".$_SESSION['user_id']."");

$stmt->выполнить();
$data = $stmt->fetchAll();

foreach ($data as $row) {

if ($row['friend'] == $_SESSION['user_id']) {

echo "<a href='profile?id=". $строки['ид_пользователя']"'. &и GT;".$строки['логин']".&ЛТ;/а&ГТ;";

}ключевые слова elseif ($строки['ид_пользователя'] == $_SESSION['ид_пользователя']) {

echo "<a href='profile?id=". $строки['друг']"'. &и GT;".$строка ["друг"]".&ЛТ;/а&ГТ;";
}
}

Richard Deeming

Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.

PHP: SQL-инъекция - руководство пользователя[^]

Elyas Omer

вы имели в виду, что я должен делать вот так, где друзья?друг = ?
и я использую varibles вместо ? в функции execute

Richard Deeming

Вам нужно использовать параметры. Если вы объедините значения данных в запрос, то ваша база данных может быть взломана.

Richard Deeming

Ваш код также почти наверняка уязвим для межсайтовых сценариев (XSS):
Межсайтовый скриптинг (XSS) | OWASP[^]

Вы должны убедиться, что все контролируемые пользователем данные правильно закодированы при их отображении.

Richard Deeming

Что касается имени, отображаемого в виде числа, то это зависит от ваших данных. Мы не можем помочь вам в этом, так как у нас нет доступа к вашей базе данных.

Elyas Omer

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

Создать таблицу " друзья` (
`friend_id` int(11) NOT NULL,
`user_id` int(11) NOT NULL,
`friend` int(11) NOT NULL,
`friend_status` int(11) NOT NULL DEFAULT '1'
) ENGINE=InnoDB кодировка по умолчанию=utf8;


Альтер-таблица `друзья`
Добавить первичный ключ (`friend_id`),
Добавить ключ `user_id` (`user_id`),
Добавить ключ `friend` (`друг`);


Альтер-таблица `друзья`
Добавьте ограничение `friends_ibfk_1` внешний ключ (`user_id`) Ссылок на пользователей `` (`ид_пользователя`) НА УДАЛЕНИЕ КАСКАД НА ОБНОВЛЕНИЕ КАСКАДА,
Добавить ограничение `friends_ibfk_2` внешний ключ (`friend`) Ссылок на пользователей `` (`ид_пользователя`) НА УДАЛЕНИЕ КАСКАД НА ОБНОВЛЕНИЕ КАСКАДА;

Richard Deeming

`friend` int(11) NOT NULL

Вы объявили о том, что friend столбец должен быть целым числом. Почему вы удивляетесь, что значения в этом столбце являются целыми числами?

Elyas Omer

потому что я связал его user_id в качестве внешнего ключа в таблице users .
так как же мне это сделать

Richard Deeming

echo "<a href='profile?id=". $row['friend'] ."'>".$row['friend']."</a>";

Вы показываете то, что friend колонка. Этот столбец содержит число.

Если вы хотите отобразить другой столбец, то укажите правильное имя столбца в вашем списке. echo заявление.

Elyas Omer

хорошо по другому я попробовал это сделать

полу $ = $Конн-&ГТ;подготовить("выберите " друзья".*, пользователей.логин, имя пользователя, пользователи.имя пользователя как friend_name из "друзей" внутреннее соединение "пользователи" на пользователей.функция user_id = друзья.функция user_id или пользователей.функция user_id = друзья.друг там, где друзья.friend = '".$_SESSION['user_id']."
Или друзья.user_id = '".$_SESSION['user_id']."");



эхо "".$строки['friend_name']."";


я получаю результат как хочу но проблема в том что он распечатывает имя пользователя с именами друзей и идентификатором друзей Вот так
friend1 id 3
имя пользователя id 3
имя пользователя id 6
friend2 id 6

Sandeep Mewara

Было бы полезно, если бы вы разделили ожидаемый результат, который вы видите, и предполагаемый.

Elyas Omer

мои друзья
3
5

они распечатываются в виде ссылки и идентификатора если я нажму на нее то попаду в профиль друга
мне просто нужно распечатать их как имена друзей вместо идентификаторов друзей

ZurdoDev

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

0 Ответов