2015-03-03 2 views
-2

Так что я пытаюсь показать, кому понравилась конкретная запись.MySQL показывает все записи на основе id

Код выглядит следующим образом:

$getlikes = mysqli_query($con, "SELECT * FROM likes WHERE post_id = $id"); 
         $likes_row = mysqli_fetch_assoc($getlikes); 
         $liked_users = $likes_row['user_id']; 

Это будет выводить только один пользователь в то время как 2 пользователям понравился пост.

В таблице MySQL БД выглядит следующим образом:

id | user_id | post_id

1 | someone | 1

2 | bob | 1

Они оба любили пост 1, но это только показывает someone.

Я хотел бы их обоих, чтобы показать, например:

Someone and Bob liked this post

+0

Это потому, что вы получаете только одну строку. См. [Mysqli_fetch_assoc()] (http://php.net/manual/en/mysqli-result.fetch-assoc.php) doc (пример 2). –

+0

Что такое o/p для 'var_dump ($ loved_users)' ... – Vagabond

+2

** ПРЕДУПРЕЖДЕНИЕ **: при использовании 'mysqli' вы должны использовать параметризованные запросы и [' bind_param'] (http://php.net /manual/en/mysqli-stmt.bind-param.php), чтобы добавить данные пользователя в ваш запрос. ** НЕ используйте ** интерполирование строк, чтобы выполнить это, потому что вы создадите серьезные [SQL-инъекции ошибок] (http://bobby-tables.com/). ** НИКОГДА ** не вводите данные '$ _POST' непосредственно в запрос. – tadman

ответ

2
$getlikes = mysqli_query($con, "SELECT * FROM likes WHERE post_id = $id"); 
while ($likes_row = mysqli_fetch_assoc($getlikes)) 
$liked_users[] = $likes_row['user_id']; 

и если вы хотите echo так вы можете echo так:

$getlikes = mysqli_query($con, "SELECT * FROM likes WHERE post_id = $id"); 
while ($likes_row = mysqli_fetch_assoc($getlikes)) 
echo $likes_row['user_id']; 

Я действительно удивляюсь, насколько вам нравится эхо и не нравится массивы, так что только для вас, вот третий вариант, как использовать qu ery, самый странный:

$liked_users=''; 
$getlikes = mysqli_query($con, "SELECT * FROM likes WHERE post_id = $id"); 
while ($likes_row = mysqli_fetch_assoc($getlikes)) 
$liked_users.= ($liked_users=='')?$likes_row['user_id']:', '.$likes_row['user_id']; 

echo $liked_users; 
+0

Это не сработало, к сожалению, это только сообщения 'Array' –

+0

сообщений ??? нет сообщений, просто переменных ...поэтому показать, что делает с этой переменной :-) – Alex

+0

Я попытался использовать '$ getlikes = mysqli_query ($ con," SELECT user_id FROM like WHERE post_id = $ id "); \t \t \t \t \t \t в то время как ($ likes_row = mysqli_fetch_assoc ($ getlikes)) {\t \t \t \t \t \t \t $ liked_users [] = $ likes_row [ 'user_id']; \t \t \t \t \t \t} 'Поэтому я использую эхо, чтобы показать' $ liked_users', который дает мне 'Array' –

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