У меня есть 1 таблица для пользователя, 1 для комментариев и еще одна для друзей. Ниже приведена структура таблицы:
Таблица комментариев:
------------------------------------------------
| comment_id | user_id_c | commentstatus |
------------------------------------------------
| 1 | 1 | Sample comment 1 |
| 2 | 2 | Sample comment 2 |
------------------------------------------------
Пользовательская таблица:
------------------------------------------------------
| id | username | password | Full name |
------------------------------------------------------
| 1 | user1 (loggedin) | Sample 1 | John |
| 2 | user2 | Sample 2 | Smith |
| 3 | user3 | Sample 3 | Andrew |
| 4 | user4 | Sample 4 | Victor |
| 3 | user5 | Sample 3 | Robert |
-------------------------------------------------------
Столы друзей
---------------------------------------------------
| id | friend1 | friend2 | status
---------------------------------------------------
| 1 | user1 | user3 | friend
| 2 | user1 | user5 | friend
| 3 | user2 | user4 | friend
---------------------------------------------------
в настоящее время, если какой-либо пользователь публикует комментарий, он вставляется в базу данных внутри таблицы комментариев. теперь, если я вошел в систему, я могу получить все свои комментарии из базы данных.
Чтобы объяснить, я хотел бы сообщить, что вы все можете видеть, что пользователь 1 дружит с пользователем 3 и пользователем 5 в соответствии с таблицей друзей.
Все, что я хочу, это получить комментарии для вошедшего в систему пользователя и для тех, кто дружит с вошедшим в систему пользователем. однако я не могу понять, как я могу получить комментарии вошедшего в систему пользователя и его друзей вместе.
сценарий, который я использую для получения своих сообщений, выглядит следующим образом:
public function comments(){
global $pdo;
$query = $pdo->prepare("SELECT u.*, c.* FROM users u INNER JOIN comments c ON u.id = c.user_id_c WHERE u.id = ".$_SESSION['sid']." ORDER BY c.comment_id DESC");
$query->execute();
return $query->fetchAll();
}
а затем получение комментариев, используя приведенный ниже код:
$comments = $get->comments();
Потом :
foreach($comments as $row){
echo $row['Full name']; //user name from user table in the database
echo $row['commentstatus']; //comment from comments table in the database
Он отлично извлекает данные для вошедшего в систему пользователя. Возможно ли, что я могу получать комментарии от друзей вошедшего в систему пользователя также с комментариями вошедшего пользователя из базы данных одновременно.
структуры таблиц помогут нам. В качестве примечания: вы смешиваете подготовленные операторы с обычными.
Я обновил свой вопрос и также упомянул структуру таблицы.
просто совет, обычно проще писать и тестировать запросы в отдельной программе, такой как PHPMyAdmin






Вы ищете что-то вроде этого:
$query = $pdo->prepare("SELECT u.*, c.* FROM users u INNER JOIN comments c ON u.id = c.user_id_c WHERE u.id = ".$_SESSION['sid']." OR c.user_id IN (SELECT friend_id FROM friends WHERE friends.user_id = ".$_SESSION['sid'].") ORDER BY c.comments_id DESC"
Этот ответ частично сработал для меня, как когда я упомянул такой код: $query = $pdo->prepare("SELECT u.*, c.* FROM users u INNER JOIN comments c ON u.id = c.user_id_c WHERE u.id = 1 OR c.user_id_c IN (SELECT u.id FROM users WHERE id = 2) ORDER BY c.post_id DESC"); Однако, когда я помещаю переменную вместо «2», это не работает, вероятно, потому, что переменная содержит несколько идентификаторов пользователя. какие-либо предложения..??
обновите свой вопрос, добавьте правильный образец данных и ожидаемый результат