altra alternativa che mi viene in mente è strutturare la query in questo modo:
SELECT * FROM tabella WHERE campo1 LIKE '%$campo1%' AND campo2 LIKE '%$campo2%' AND campo3 LIKE '%$campo3%' AND campo4 LIKE '%$campo4%'
in modo che se il campo è vuoto la query ti cerca qualsiasi [%] valore per quel campo e non influisce sulla tua query.
naturalmente ti conviene fare un minimo di controllo sui dati in entrata, ad esempio così:
$campo1 = trim($_POST['campo1']);
questo è il minimo, che ti toglie eventuali spazi all'inizio e alla fine della stringa, evitando che vengano passate stringhe contenenti solo spazi.
vedi le funzioni sul manuale [php.net].
![]()