El WHERE está mal redactado.
Cada uno de los campos que se quiere comparar debe llevar la comparación:
Te está devolviendo todo, porque si no le haces una comparación lógica, será true con sólo que el campo contenga ALGO.
¿Se entiende?
Posdata, el cómo pases el parámetro es off-topic en este foro. Aquí sólo tratamos temas de SQL.