Originariamente inviato da Dimischiavone
si la tua soluzione è sicurament emigliore dal codice e il resto però la ricerca per i campi singoli diversi da tutti non funziona epure la query è impostata bene!
nel WHERE se e' presente AND e OR i raggruppamenti vanno chiusi tra parentesi. Se poi si usa un carattere jolly come % oppure _ bisogna usare LIKE. Uguale cercherebbe proprio il carattere % e non il significato di un carattere jolly.
codice:
WHERE stile LIKE '%$stile%' && nome LIKE '%$parola%' 
      || autore LIKE '$parola%' || tema LIKE '%$parola%'

viene interpretato come:

WHERE (stile LIKE '%$stile%' && nome LIKE '%$parola%') OR tutto il resto. 

mentre dovrebbe essere:

WHERE stile LIKE '%$stile%' 
AND (nome LIKE '%$parola%' 
     OR autore LIKE '%$parola%'
     OR tema LIKE '%$parola%')