Foros del Web » Programando para Internet » PHP »

Error al hacer update

Estas en el tema de Error al hacer update en el foro de PHP en Foros del Web. Hola, Hola, llevo dos días dandole vueltas al siguiente erro si alguien me echara un cable le estaría agradecido: Recoge los datos de un formulario ...
  #1 (permalink)  
Antiguo 29/06/2013, 11:19
Avatar de maligix  
Fecha de Ingreso: julio-2011
Ubicación: Barcelona
Mensajes: 29
Antigüedad: 13 años, 4 meses
Puntos: 2
Error al hacer update

Hola,

Hola, llevo dos días dandole vueltas al siguiente erro si alguien me echara un cable le estaría agradecido:

Recoge los datos de un formulario de actualizacion de perfil de usuario.


Query failed: SQLSTATE[42000]: Syntax error or access violation: 1064 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 'WHERE id = '10'' at line 19

El código es el siguiente:

$passwordSql = $this->data["password"] ? "password = :password," : "";
$sql = "UPDATE " . $this->TBL_MEMBERSFINAL . " SET
logoimagen = :logoimagen,
nombreempresa = :nombreempresa,
descripcion = :descripcion,
categoriapro0 = :categoriapro0,
categoriapro1 = :categoriapro1,
categoriapro2 = :categoriapro2,
pagweb = :pagweb,
firstName = :firstName,
lastName = :lastName,
emailAddress = :emailAddress,
provincia = :provincia,
poblacion = :poblacion,
calle = :calle,
numero = :numero,
cifnifnie = :cifnifnie,
username = :username,
$passwordSql
WHERE id = :id";
  #2 (permalink)  
Antiguo 29/06/2013, 11:57
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Error al hacer update

Esto ya lo preguntaste en el foro de MySQL (http://www.forosdelweb.com/f86/error-bd-1061061/), donde te dije expresamente que para poder ver cuál es el error tienes que capturar la sentencia una vez que se reemplazan las variables por los datos que estas contienen.
De haber hecho lo que te indiqué, lo hubiésemos resuelto en un instante, sin necesidad de que replicaras el problema en este foro.

De todos modos, algo se puede ver en el código SQL embebido (si embebido, cosa que también te expliqué en el post del otro foro), y es simplísimo: Estás metiendo código mál escrito en la variable $password... Con lo que el problema es exactamente como yo lo suponía.
¿Donde?
Bueno, luego del valor del password, estás poniendo una coma de más.
Las comas en el SET son para separar los diferentes campos y asignaciones que se realizan... el último valor no debe terminar en coma. Genera un error de sintaxis.
Es decir:
Código PHP:
Ver original
  1. $passwordSql = $this->data["password"] ? "password = :password " : "";
Además, si ese valor es condicional, es decir si puede no existir, la creación de la sentencia debe incluir una validación para poder incluir o no la coma después del username... cosa que tampoco estás haciendo.
En otras palabras, es una forma de creación incorrecta de la sentencia SQL embebida en el PHP.
Código PHP:
Ver original
  1. $passwordSql = $this->data["password"] ? ", password = :password " : "";
  2. $sql = "UPDATE " . $this->TBL_MEMBERSFINAL . " SET
  3. logoimagen = :logoimagen,
  4. nombreempresa = :nombreempresa,
  5. descripcion = :descripcion,
  6. categoriapro0 = :categoriapro0,
  7. categoriapro1 = :categoriapro1,
  8. categoriapro2 = :categoriapro2,
  9. pagweb = :pagweb,
  10. firstName = :firstName,
  11. lastName = :lastName,
  12. emailAddress = :emailAddress,
  13. provincia = :provincia,
  14. poblacion = :poblacion,
  15. calle = :calle,
  16. numero = :numero,
  17. cifnifnie = :cifnifnie,
  18. username = :username ";
  19. if($passwordSql != "") {$sql .= $passwordSql;};
  20. $sql .= "WHERE id = :id";
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 29/06/2013 a las 12:07
  #3 (permalink)  
Antiguo 30/06/2013, 03:39
Avatar de maligix  
Fecha de Ingreso: julio-2011
Ubicación: Barcelona
Mensajes: 29
Antigüedad: 13 años, 4 meses
Puntos: 2
Respuesta: Error al hacer update

Hola, de nuevo.

Estás en lo cierto la coma sobra. Error clamoroso! de escritura que son los que más joden.

Me quito el sombrero y me rindo ante tus pies!!!


Gracias!!!

Etiquetas: formulario, mysql, sql, update
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 13:55.