Prova questo: l'unica condizione e' che il name del form deve essere lo stesso nome campo che usi nel db. Ti ho messo l'ipotesi con un campo obbligatorio (se non serve basta eliminarlo), di un campo "submit" (da scartare) piu' i tuoi 4 campi citati. 1 campo obbligatorio comunque ci vorrebbe sempre, altrimenti ti tira fuori tutto il db...
codice:
<?php
// dati di prova
$_POST['provincia'] = 'Novara';
$_POST['nome']      = '';
$_POST['cognome']   = 'Brambilla';
$_POST['email']     = 'brambilla@lamadunina.mi';
$_POST['submit']    = 'Invia';

echo "<pre>";
print_r($_POST);


// inizio estrazione dati...
$where = "WHERE ";

foreach($_POST as $key => $value  ) {

   if($key == 'provincia' AND $value == '' ) {
      echo "La Provincia e' un dato obbligatorio.
            ciao ciao micio micio";
      exit;

      } elseif($value == '' OR $key == 'submit' ) {
                //    nessuna azione
            }  
               else {
                       $where .=  "$key = '$value' AND ";
                     }
}
$where = substr($where, 0, -4);

echo "
SELECT *
FROM tabella
$where";

?>
Avendo solo 4 campi potresti fare 4 elseif, una per ogni campo dove potresti controllare i dati inseriti oppure cambiare il "name" del form con l'eventuale nome_campo diverso nella tabella. (metti il nome_campo al posto di $key)

Potrebbero anche essere 50 campi...