tienes toda la razón, pero yo sigo del lado de la lógica del lenguaje... php no tiene motivos para inventar mensajes de error por diferentes causas, si dice que algo está mal en la consulta así debería ser...
pero yo quiero que me ayudes a sacarme de la duda, cambia esta linea así:
Código PHP:
$result=mysql_query($sql)or die(mysql_error()." en la consulta: <pre>$sql</pre>");
por favor, ejecuta de nuevo tu script y muestra el nuevo mensaje de error completo... (: