Dunque...... :master:
C'è un errore di sintassi nella query, per cui modifica leggermente lo script come ti indico e poi fammi risapere.

Codice PHP:
// ometto la parte precedente

$query "";
reset ($keys);
while (list(,
$parola) = each ($keys)) 
$parola trim($parola);
if (
$parola != "")
$query "titolo LIKE '%$parola%' OR testo LIKE '%$parola%' OR autore LIKE '%$parola%' OR ";
}
$query .= "0";

$query .= "SELECT id, titolo, data FROM news WHERE " $query;

echo 
$sql;
exit;

/*
La parte successiva dello script puoi anche non commentarla
tanto non viene eseguita per via dell'exit.
*/ 
Così vai a stampare la stringa della query come tale e dovresti vedere dove c'è l'errore di sintassi.
Se non lo trovi da solo, posta la stringa qui e vedremo il da farsi.