ciao per me la cosa migliore è costruire passo passo la stringa di ricerca, io ho fatrto un piccolo motore di ricerca, e la stringa mi viene costruita in base ai campi che vengono riempiti dall'utente!
ti posto il codice, così puoi dargli un'occhiata, non è nulla di che, ma magari può esserti utile:



ricerca con il criterio OR:
codice:
if ((($_POST[chiave]) == ("")) and (($_POST[chiave_testata]) == ("")) and (($_POST[chiave_ISSN]) == ("")) and (($_POST[chiave_soggetto]) == (""))) 
die ("

<center><font  size=\"4\" color=\"#000066\">Bisogna Inserire Almeno Un Campo Per Poter Effettuare La Ricerca </font></center>");
$query="";
if ($_POST['rata'] != "0")
{
    $query .= "SELECT * FROM riviste WHERE";
    if ($_POST['chiave'] != "")
    {
        $query .= " editore LIKE '%" . $_POST['chiave'] . "%' or ";
    }
    if ($_POST['chiave_testata'] != "")
    {
        $query .= " testata LIKE '%" . $_POST['chiave_testata'] . "%' or ";
    }
    if ($_POST['chiave_ISSN'] != "")
    {
        $query .= " ISSN = '" . $_POST['chiave_ISSN'] . "' or ";
    }
    if ($_POST['chiave_soggetto'] != "")
    {
        $query .= " soggetto LIKE '%" . $_POST['chiave_soggetto'] . "%' or ";
    }
$query.="0";
ricerca con il criterio AND:

codice:
if (($_POST['rata'])!=("1")){
 $query .= "SELECT * FROM riviste WHERE";
    $i=0;
    if ($_POST['chiave'] != "")
    {
        $query .= " editore LIKE '%" . $_POST['chiave'] . "%' ";
	$i=1;
    }
    if (($_POST['chiave_testata'] != "") and ($i==1))
    {
        $query .= " and testata LIKE '%" . $_POST['chiave_testata'] . "%'";
	$i=2;
    }
    if (($_POST['chiave_testata'] != "") and ($i==0))
    {
        $query .= " testata LIKE '%" . $_POST['chiave_testata'] . "%'";
	$i=3;    
    }
    if (($_POST['chiave_ISSN'] != "") and (($i==1)or($i==2)or($i==3)))
    {
        $query .= " and ISSN = '" . $_POST['chiave_ISSN'] . "' ";
	$i=4;    
    }
    if (($_POST['chiave_ISSN'] != "") and ($i==0))
    {
        $query .= " ISSN = '" . $_POST['chiave_ISSN'] . "' ";
	$i=5;
    }
    if (($_POST['chiave_soggetto'] != "") and (($i==1)or($i==2)or($i==3)or($i==4)or($i==5)))
    {
        $query .= " and soggetto LIKE '%" . $_POST['chiave_soggetto'] . "%'";
    }
    if (($_POST['chiave_soggetto'] != "") and ($i==0))
    {
        $query .= " soggetto LIKE '%" . $_POST['chiave_soggetto'] . "%'";
    }