2017-01-12 3 views
-2

Я создал базу данных пользователей, сообщений и друзей и хочу вытащить все сообщения из сообщений, где account_name $ u = "logged in user", а также где account_name is "в друзьях список зарегистрированных пользователей "Запрос, чтобы извлечь данные из таблицы mysqli

Как я могу добавить запрос, чтобы вытащить sth? Пожалуйста, проверьте приведенную ниже запрос:

​$sql = "SELECT p.*, u.avater FROM posts AS p 
    LEFT JOIN users AS u ON u.username = p.author 
    WHERE (p.account_name='$u') OR (p.account_name = '(if exist in logged_user friends list') 
    ORDER BY p.postdate DESC LIMIT 20"; 
+0

Как меня помнить друг? – Progrock

ответ

0

Один из способов сделать это было бы использовать IN, а затем выберите подзапрос в вашем WHERE заявлении, смотрите ниже.

Я не уверен в вашей структуре таблицы в logged_user, а просто выбрать один столбец (id, в приведенном ниже примере), а затем использовать $u пользователя в WHERE заявлении.

Обратите внимание, что неверно использовать «$ u» непосредственно в запросе, и вы должны использовать подготовленные операторы.

SELECT p.*, u.avater 
FROM posts AS p 
LEFT JOIN users AS u ON u.username = p.author 
WHERE p.account_name = '$u' 
OR p.account_name IN (SELECT user2 FROM friends WHERE user1 = '$u') 
ORDER BY p.postdate DESC LIMIT 20 
+0

спасибо, но он не работал – Benjamin

+0

Какова структура вашей таблицы logged_users? –

+0

спасибо, но он не работал, PLS снова проверить qus У меня есть таблица друзей с полями (id, user1, user2, принято) Я хочу выбрать сообщения из таблицы posts, где p.account_name - logged_in user ($ u) ИЛИ находится в списке друзей $ u (запрос для выбора $ u friends идет SELECT user2 от друзей WHERE user1 = "$ u" ИЛИ SELECT user1 FROM friends WHERE user2 = "$ u" ... PLS использует $ u переменная, я использую инструкции Prepare, если я могу получить работу, я могу использовать операторы Prepare вместо Спасибо – Benjamin

Смежные вопросы