Hola.
lo que pasa es que cuando ponene una ' o " dependiendo de tu instruccion sql esta se modifica rompiendo la cadena original (tu consulta), para eso lo que yo hago es eliminar comillas, diagonales y/o espacios.
te explico un poco.
primero tomo cada parametro que llega (en este caso por GET), el primer str_replace cambia los espacios por %20, que es su codigo html; el segundo elimina las postrofes, esto lo hago con el caracter de escape
\ diagonal invertida (alt+92), y el ultimo elimina las diagonales para que no inyecten comillas. Asi mismo puedes hacerlo para las comillas dobles.
Suerte.