Cuando la sentencia SQL está bien escrita (como en este caso), el 100% de las veces tiene que ver con las variables de programación.
Lo más probable es que
$_POST["id"] esté llegado vacía... o que en definitiva hace que el problema no sea de MySQL sino de PHP.