2015-09-10 8 views
5

Я работаю над системой блога, в которой блоги классифицируются, и мы можем выбрать категорию, которую хотим. Для этого мне нужно отделить таблицы blogs и categories. Я знаю, как получать блоги из всех категорий и из одной категории, но я не знаю, как получать блоги из нескольких, но не всех категорий.Выбор нескольких категорий из базы данных

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

<?php 
    $query = ("SELECT blogs_id, title, body, posted_by, category FROM blogs INNER JOIN categories ON categories.category_id=blogs.category_id where category='cat1' ORDER BY blogs_id desc LIMIT 10"); 
    $result = mysql_query($query) or die("error:".mysql_error()); 
    while ($row = mysql_fetch_assoc($result)) { 
     $title = $row['title']; 
     $body = $row['body']; 
     $posted_by = $row['posted_by']; 
     ?> 

Этот код предназначен для выбора одной категории, и она работает хорошо, но теперь я хочу, чтобы выбрать несколько (но не все) категории. Я пробовал несколько разных вариантов, но не смог:

<?php 
$query = ("SELECT blogs_id, title, body, posted_by, category FROM blogs INNER JOIN categories ON categories.category_id=blogs.category_id where category='cat1' AND category='cat2' AND category='cat3' ORDER BY blogs_id desc LIMIT 10"); 

Это не помогло.

ответ

4

Используйте IN положение:

WHERE category IN ('cat1', 'cat2', 'cat3') 

В качестве альтернативы, вы можете использовать OR:

WHERE category = 'cat1' 
    OR category = 'cat2' 
    OR category = 'cat3' 
3

Попробуйте OR вместо AND (в где условия). попробуйте это:

$query = ("SELECT blogs_id, title, body, posted_by, category FROM blogs INNER JOIN categories ON categories.category_id=blogs.category_id where category='cat1' OR category='cat2' OR category='cat3' ORDER BY blogs_id desc LIMIT 10"); 
1

Попробуйте

$query = ("SELECT blogs_id, title, body, posted_by, category FROM blogs INNER JOIN categories ON categories.category_id=blogs.category_id where category IN ('cat1', 'cat2', 'cat3') ORDER BY blogs_id desc LIMIT 10"); 
Смежные вопросы