2015-09-10 18 views
5

Sto lavorando su un sistema di blog in cui i blog sono categorizzati e possiamo scegliere la categoria che vogliamo. Per questo, devo separare le tabelle blogs e categories. So come ottenere blog da tutte le categorie e da una singola categoria, ma non so come ottenere blog da più ma non da tutte le categorie.selezionare più categorie dal database

Il mio codice è simile al seguente:

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

Questo codice è per la selezione di una sola categoria e funziona bene, ma ora voglio scegliere più (ma non tutte) le categorie. Ho provato alcune opzioni diverse, ma non è riuscito:

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

Ciò non ha funzionato.

risposta

4

utilizzare la clausola IN:

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

In alternativa, è possibile utilizzare OR:

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

Prova OR al posto di AND (in cui condizione). provare questo:

$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

Prova questa

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