Bueno, primero un detalle: En los foros de bases de datos no se debe poner código de programación. Confunde, ensucia el SQL, lo vuelve ilegible especialmente para aquellos que no trabajan en el lenguaje posteado, y por sobre todas las cosas (además de ser una norma del foro), esconde los problemas causados por las variables que se incrustan.
Ese parece ser el problema aquí.
La sentencia en sí está bien escrita:
Pero si la variable $id no contiene datos, como parece suceder ya que no se ve ninguna asignación de valores a la misma, el resultado en lugar de ser algo como:
será:
Lo que evidentemente generará un error de sintaxis.
Revisa la variable.