Mi spiace, esposto cosi' faccio fatica a capire cosa va e cosa no, separa nettamente le due versioni....

Tra l'altro nel primo codice mancherebbe un else ... te lo metto indentato per capire meglio perche' mi perplime...
codice:
var sql = "SELECT * FROM risultati ";
var i;
for (i=0; i<cerca.length; i++) {
  if (i > 0) sql += " AND"; 
  sql += " WHERE ";
}
{
  sql += " OR ";
  sql += "chiave LIKE '%" + cerca[i] + "%' OR Porte LIKE '%" + cerca[i] + "%'";
} 
sql += " ORDER BY Porte Asc";
Come vedi e' una logica tutta diversa... dubito che in situazioni comprendenti piu' di un termine da ricercare possa funzionare.

ciao