Holas Okiro
Yo creo que la sentencia de búsqueda original está buena.
La verdad no veo error en el código, al menos en lo que alcanzo a leer ahora.
Para asegurarte que la sentencia sql esté super correcta, yo te sugiero que la armes a partir de los valores de búsqueda recibidos. Esto es:
Código PHP:
<?
//...
$condiciones_verempresas = array();
if (!empty($nombre))
{ $condiciones_verempresas[] = " nombre LIKE '%$nombre%' "; }
if (!empty($categoria))
{ $condiciones_verempresas[] = " categoria LIKE '%$categoria%' "; }
if (!empty($localidad))
{ $condiciones_verempresas[] = " localidad LIKE '%$localidad%' "; }
if (count($condiciones_verempresas) > 1)
{ $condiciones = join($condiciones_verempresas, " OR "); }
else
{ $condiciones = $condiciones_verempresas[0]; }
if (!empty($condiciones))
{ $query_verempresas = "SELECT * FROM empresas WHERE ".$condiciones; }
else
{ print"No ha ingresado ningun parametro de busqueda..."; }
//...
?>
No sé si se entiende. Es algo engorroso de hacer, pero con eso o algo parecido, te aseguras que tu query quede bien formada, y lo mejor, hecha a la medida de tu búsqueda...