Esto no contiene ningún error formal de sintaxis. Pero es muy, muy habitual ese error cuando las variables no contienen lo que el programador
cree que contienen, simplemente porque no las validan antes de usarlas.
En definitiva, es un error en MySQL provocado por un defectuoso manejo de programación, pero eso no es tema en este foro (leer las normas de los foros de BBDD, por favor).
Si quieres comprobarlo, haz algo simple: Verifica qué contienen las variables y cómo queda armada la consulta
antes de enviarla a ejecutar.
¿Que quiero decir con eso?
Sencillo: Carga la consulta en una variable, sin ejecutarla directamente, y haz que se muestre en pantalla. Un simple
echo te servirá para eso.
Por otro lado, si quieren seguir el tema, lo moveré a PHP, porque lo que se haga en programación, como ya recalqué, no es tema de este foro.