Ответ 1
Возможно, вы хотите использовать IN
SELECT * FROM posts WHERE userid IN ('$user_ids')
У меня есть две базы данных, в которых я храню, кто следит за тем, кто и кто сохраняет записи, которые пользователь делает.
Я хочу выбрать всех пользователей, которых пользователь следит за следующей базой данных, и отобразить имена пользователей тех, кто этот пользователь, и запросить базу данных сообщений для сообщений этого пользователя.
Моя проблема в том, что если пользователь следит за несколькими пользователями, Я повторил идентификатор пользователя, которого этот пользователь следит, и я получаю 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.
Как я могу получить все записи для всех пользователей?
Возможно, вы хотите использовать IN
SELECT * FROM posts WHERE userid IN ('$user_ids')
Запрос должен быть:
SELECT * FROM posts WHERE userid IN (44,44,33,44,33,0)
Однако вам может потребоваться переосмыслить вашу модель данных и убедиться, что она нормализована, так что вы можете выразить эту конструкцию непосредственно в базе данных, не повторяя ее в разделенную запятыми строку.
Почему у вас две базы данных? Вы имеете в виду две таблицы?
Предположим, что у вас есть две таблицы, а не базы данных, и что таблица (позволяет называть ее "друзьями" ), которая описывает, кто стоит за тем, кто похож на
table friends(
userid
friendid
)
тогда запрос на получение сообщений, отправленных друзьями X, будет
SELECT
p.*
FROM posts p
JOIN friends f ON(p.userid = f.friendid)
WHERE f.userid = X
$get_posts = mysql_query("SELECT * FROM posts WHERE userid in '($user_ids)'");
$var= str_replace(","," or userid = ","userid =$your_data_from_db");
ваш myqsl_query = SELECT * FROM posts where $var