2014-09-12 4 views
0

Я собираюсь на основе покинуть это руководство в предыдущем StackOverflow сообщение:PHP/MySQL - Список друзей SQL Query

"Table Name: User 
Columns: 
    UserID PK 
    EmailAddress 
    Password 
    Gender 
    DOB 
    Location 

TableName: Friends 
Columns: 
    UserID PK FK 
    FriendID PK FK 
    (This table features a composite primary key made up of the two foreign 
    keys, both pointing back to the user table. One ID will point to the 
    logged in user, the other ID will point to the individual friend 
    of that user) 

Example Usage: 

Table User 
-------------- 
UserID EmailAddress Password Gender DOB  Location 
------------------------------------------------------ 
1  [email protected] bobbie M  1/1/2009 New York City 
2  [email protected] jonathan M  2/2/2008 Los Angeles 
3  [email protected] joseph M  1/2/2007 Pittsburgh 

Table Friends 
--------------- 
UserID FriendID 
---------------- 
1  2 
1  3 
2  3" 

Теперь, я все, что сделано, и я создал этот запрос:

if ($_SESSION["user_id"]) { 
    $user_id = $_SESSION["user_id"]; 
    $query = "SELECT * "; 
    $query .= "FROM friends "; 
    $query .= "WHERE "; 
    $query .= "user_id OR friend_id = '{$user_id}' "; 
    $result = mysqli_query($connection, $query); 
    $result_set = mysqli_fetch_assoc($result); 
    print_r($result_set); 

Yay! Этот print_r получает связанный массив, который я ожидал. Но теперь, поскольку пользователь user_id ИЛИ friend_id может быть зарегистрированным пользователем, я смущен s, к какому запросу я должен идти, чтобы иметь возможность фактически отображать список друзей.

$query = "SELECT * "; 
$query .= "FROM users "; 
$query .= "WHERE id = '' 

Это касается того, насколько я получил из-за своего смятения. Любая точка в правильном направлении была бы потрясающей. Спасибо!

+0

Помимо того, что у вас нет значения '$ user_id', что случилось со вторым запросом, который вы написали? Что возвращается? –

ответ

0

О, я понимаю. Вы (пользователь) хотите отобразить свои друг (другие пользователи)

Попробуйте это:

SELECT U.EmailAddress, U.Gender, U.DOB, U.Location FROM User U 
LEFT JOIN Friends F on U.UserID = F.Friend_ID WHERE F.User_ID = 1; 

А потом просто замените 1 на то, вошедших в идентификаторе пользователя является.

Cheers!

+0

спасибо tim! ive никогда не использовал это «u». формат ранее. когда вы помещаете «ОТ пользователя U», должен ли ваш «Пользователь» на самом деле быть именем моей таблицы, который является «пользователями» с нижним регистром u, или это необходимый капитал? Редактировать: о, им жаль. В этом примере фактически называются таблицы. Это мое, которое называется по-разному. большое спасибо, я понимаю! – diabetesjones

+0

tim, вы думаете, что theres так или иначе может сломаться на английском языке, что этот запрос MySQL выполняет для меня точно? У меня есть он, где он не производит никаких ошибок, но я все еще не могу напечатать_r ($ result_set) по этому запросу после его завершения. редактировать: ЭТО РАБОТАЕТ. Я РАБОТАЮ. большое спасибо tim :) – diabetesjones

+0

Эй, человек не проблема. То, что делает этот запрос MySQL, - это выбор адреса электронной почты, пола, даты рождения и местоположения от всех пользователей, а затем присоединение к таблице друзей (используя столбец Friends.Friend_ID = Users.UserID), тогда показывающий только результаты, в которых Friends.User_ID = The выбранный идентификатор. Это было немного сложнее, но я рад, что у вас это работает :) –

0

PHP

$reg_no = $_SESSION["user_id"]; 

SQL QUERY:

select * from `User` join `friends` on '$reg_no' = `friends`.`UserID` and `User`.`UserID` = `friends`.`UserID` or '$reg_no' = `FriendID` and `User`.`UserID` = `friends`.`UserID`; 

ПОПРОБУЙТЕ ....