2015-09-10 27 views
5

Pracuję nad systemem blogów, w którym blogi są skategoryzowane i możemy wybrać kategorię, którą chcemy. W tym celu muszę oddzielić tabele blogs i categories. Wiem, jak uzyskać blogi ze wszystkich kategorii i jednej kategorii, ale nie wiem, jak uzyskać blogi z wielu, ale nie wszystkich kategorii.wybieranie wielu kategorii z bazy danych

Mój kod wygląda następująco:

<?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']; 
     ?> 

Ten kod jest wybranie jednej kategorii i to działa dobrze, ale teraz chcę, aby wybrać wiele (ale nie wszystkie) Kategorie. Wypróbowałem kilka różnych opcji, ale nie udało się:

<?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"); 

To nie zadziałało.

Odpowiedz

4

Użyj IN klauzuli:

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

Alternatywnie, można użyć OR:

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

Spróbuj OR zamiast AND (w warunku WHERE). spróbuj tego:

$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

Spróbuj

$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");