ciao...
mi sto accingendo anche io a realizzare una cosa del genere...
secondo me si può fare così:

codice:
$sql="SELECT * FROM tabella ";
$sql.="WHERE visible=1 AND";

// tolgo gli spazi iniziale e finale dalla keyword 
$keywords=trim($_POST["keywords"]);
// creo un array di parole nel caso siano più di una 
$search=explode(" ",$keywords);

// per ogni parola inserita scrivo un pezzo di query che verifica se la parola è presente in almeno uno dei campi della tabella 	
foreach($search as $key=>$value)
  $search[$key]="(campo1 LIKE'%".$value."%' OR campo2 LIKE'%".$value."%' OR campo3 LIKE'%".$value."%')";

// riunisco tutti i pezzi di query che ho creato attaccandoli l'uno all'altro tramite " AND " e li aggiungo alla query iniziale 		
$sql.=implode(" AND ", $search);

non ho ancora provato ad eseguire la query sul database ma ho provato a stamparla ed esce bene...
a me sembra corretto ma ti farò sapere meglio anche se funziona...