Подтвердить что ты не робот

MySQL выбирает, где равно нескольким значениям

У меня есть две базы данных, в которых я храню, кто следит за тем, кто и кто сохраняет записи, которые пользователь делает.

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

Моя проблема в том, что если пользователь следит за несколькими пользователями, Я повторил идентификатор пользователя, которого этот пользователь следит, и я получаю 44443344330

Когда я отделяю каждый идентификатор запятыми, я получаю:

44,44,33,44,33,0, 

то пусть пусть переменная $user_ids;

$user_ids = "44,44,33,44,33,0, ";

запрос:

$get_posts = mysql_query("SELECT * FROM posts WHERE userid = '$user_ids'");

но все, что он делает, показывает записи первого идентификатора пользователя, 44.

Как я могу получить все записи для всех пользователей?

4b9b3361

Ответ 1

Возможно, вы хотите использовать IN

SELECT * FROM posts WHERE userid IN ('$user_ids')

Ответ 2

Запрос должен быть:

SELECT * FROM posts WHERE userid IN (44,44,33,44,33,0)

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

Почему у вас две базы данных? Вы имеете в виду две таблицы?

Ответ 3

Предположим, что у вас есть две таблицы, а не базы данных, и что таблица (позволяет называть ее "друзьями" ), которая описывает, кто стоит за тем, кто похож на

table friends(
  userid
  friendid
)

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

SELECT
 p.* 
FROM posts p
  JOIN friends f ON(p.userid = f.friendid)
WHERE f.userid = X

Ответ 4

$get_posts = mysql_query("SELECT * FROM posts WHERE userid in '($user_ids)'");

Ответ 5

$var= str_replace(","," or userid = ","userid =$your_data_from_db");

ваш myqsl_query = SELECT * FROM posts where $var