Yo lo que hacía era construir el query con el array que tiene las condiciones de la búsqueda: Por ejemplo hablemos de un item que tiene nombre, código, color y precio.
Código PHP:
function creaQuery($opciones){
$q = "SELECT * FROM item";
$bandera = true;
if(isset($opciones['nombre']) && $opciones['nombre'] != ''){
$q .= ($bandera)?" WHERE nombre = ".$nombre: " AND nombre = ".$nombre;
$bandera = false;
}
if(isset($opciones['codigo']) && $opciones['codigo'] != ''){
$q .= ($bandera)?" WHERE codigo= ".$codigo: " AND codigo= ".$codigo;
$bandera = false;
}
if(isset($opciones['color ']) && $opciones['color '] != ''){
$q .= ($bandera)?" WHERE color = ".$color : " AND color = ".$color ;
$bandera = false;
}
if(isset($opciones['precio']) && $opciones['precio'] != ''){
$q .= ($bandera)?" WHERE precio= ".$precio: " AND precio= ".$precio;
$bandera = false;
}
$q.=" ORDER BY codigo LIMIT 20";
return $q;
}
No te olvides de validar que los input no sean maliciosos y tengan el formato correcto.