Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Error incomprensible

Estas en el tema de Error incomprensible en el foro de PHP en Foros del Web. Hola, tengo un error que no puedo entender, he hecho miles de inserciones de datos en una tabla y ahora me sale un error que ...
  #1 (permalink)  
Antiguo 20/07/2013, 08:55
Avatar de ananda  
Fecha de Ingreso: enero-2012
Mensajes: 345
Antigüedad: 12 años, 3 meses
Puntos: 14
Error incomprensible

Hola, tengo un error que no puedo entender, he hecho miles de inserciones de datos en una tabla y ahora me sale un error que no comprendo, os muestro el código y el error:

Código PHP:
<?php
require_once("./include/class.inputfilter.php");
$ifilter = new InputFilter();

setlocale(LC_TIME'es_ES');
$width $ifilter->process($_POST['width']);
$height $ifilter->process($_POST['height']);
$top $ifilter->process($_POST['top']);
$left $ifilter->process($_POST['left']);

include(
'config.php');
$conexion=conectar();


mysql_query ("SET NAMES 'utf8'");
mysql_query("INSERT INTO customiza (width,height,top,left) VALUES ('".mysql_real_escape_string($width)."','".mysql_real_escape_string($height)."','".mysql_real_escape_string($top)."','".mysql_real_escape_string($left)."')");
?>
Como veis es un código muy tonto que no tiene nada de especial, bien, el error que me da es este:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'left) VALUES ('319','52','63','317')' at line 1. 1064

Por lo tanto, las variables las recibe bien pero incomprensiblemente me dice que no puedo meter el parámetro 'left'

En la tabla está todo correcto y los campos se llaman igual, así que no puedo entenderlo... Ojalá podáis ayudarme, estos errores tan idiotas son lo que más me molestan
__________________
Creador de Vipefy , una nueva red social con un punto de vista diferente de las relaciones sociales.
  #2 (permalink)  
Antiguo 20/07/2013, 09:56
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Error incomprensible

Cita:
Por lo tanto, las variables las recibe bien pero incomprensiblemente me dice que no puedo meter el parámetro 'left'
Regla número 1 de programación en cualquier lenguaje, así como en el lenguaje de consultas: Nunca jamás se usan palabras reservadas como nombres de objetos. Jamás. Ni en sueños. No se hace...

Estás usando LEFT, que es el nombre de una función propia de MySQL, y eso te dará error. Si no te lo dio antes puede ser por causa de configuraciones de servidor (tal vez), pero no se hace.
Como consejo de desarrollador en BBDD, te recomiendo que jamás uses palabras en simples en inglés para los objetos tales como tablas, columnas, indices, etc., porque eventualmente chocarás con problemas de este tipo. Siempre que debas hacerlo (por requisitos del caso), pon esos nombres entre acentos agudos (`), los que no deben ser confundidos con apostrofos ('). Pero es preferible evitarlo, ya que en alguna ocasión te los olvidarás y empezarán otra vez los problemas.
Las buenas prácticas determinan que los nombres de campos deben ser escritos con prefijos o sifijos que indiquen la tabla propietaria. Eso evita desde el inicio problemas de esta clase.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 20/07/2013, 10:09
Avatar de ananda  
Fecha de Ingreso: enero-2012
Mensajes: 345
Antigüedad: 12 años, 3 meses
Puntos: 14
Respuesta: Error incomprensible

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Regla número 1 de programación en cualquier lenguaje, así como en el lenguaje de consultas: Nunca jamás se usan palabras reservadas como nombres de objetos. Jamás. Ni en sueños. No se hace...

Estás usando LEFT, que es el nombre de una función propia de MySQL, y eso te dará error. Si no te lo dio antes puede ser por causa de configuraciones de servidor (tal vez), pero no se hace.
Como consejo de desarrollador en BBDD, te recomiendo que jamás uses palabras en simples en inglés para los objetos tales como tablas, columnas, indices, etc., porque eventualmente chocarás con problemas de este tipo. Siempre que debas hacerlo (por requisitos del caso), pon esos nombres entre acentos agudos (`), los que no deben ser confundidos con apostrofos ('). Pero es preferible evitarlo, ya que en alguna ocasión te los olvidarás y empezarán otra vez los problemas.
Las buenas prácticas determinan que los nombres de campos deben ser escritos con prefijos o sifijos que indiquen la tabla propietaria. Eso evita desde el inicio problemas de esta clase.
Hola, no tenía ni idea de que left fuera una palabra reservada de MySQL, muchísimas gracias por la información y la explicación, funciona perfectamente y he aprendido algo muy útil, gracias! Un saludo, Marc.
__________________
Creador de Vipefy , una nueva red social con un punto de vista diferente de las relaciones sociales.
  #4 (permalink)  
Antiguo 20/07/2013, 10:38
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años
Puntos: 47
Respuesta: Error incomprensible

Por favor marquen como solucionado los temas, cuando los resuelvan asi nos ayudan a darnos cuenta que el problema está resuelto!!!!

Etiquetas: mysql, sql, tabla, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:10.