Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Error al realizar un update por medio de ajax

Estas en el tema de Error al realizar un update por medio de ajax en el foro de PHP en Foros del Web. Hola estoy tratando de hacer un update a una tabla de mi base de datos, la idea para realizar la actualización es que tengo varios ...
  #1 (permalink)  
Antiguo 03/09/2014, 18:12
Avatar de MLDGATO  
Fecha de Ingreso: marzo-2011
Ubicación: Guatemala
Mensajes: 113
Antigüedad: 13 años, 1 mes
Puntos: 2
Pregunta Error al realizar un update por medio de ajax

Hola estoy tratando de hacer un update a una tabla de mi base de datos, la idea para realizar la actualización es que tengo varios inputs y cada uno tiene el evento onBlur, asi que hago clic en uno hago el cambio y cunado hago clic en otro lado o hago foco en otro lugar se debe realizar el update, en teoría todo está funcionando bien menos la consulta encargada de hacer el Update ya que sale el siguiente error:

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 ''NombreEmpresa' = 'Colegio Shalom1' WHERE IdPerfil = '1'' at line 1


Todos los inputs están de la siguiente manera:

Código HTML:
Ver original
  1. <input name="NombreEmpresa" type="text" class="datosmenor" id="NombreEmpresa" onBlur="actualiza(<?php echo $idperfil; ?>, this.id, this.value)" value="<?php echo $fila['NombreEmpresa']; ?>">

El evento OnBlur llama a la función actualiza y le envía tres parámetros: el id de mi fila, el nombre del input(ya que el input se llama igual a la columna de mi base de datos) y el valor del input. la función es la siguiente:

Código Javascript:
Ver original
  1. function actualiza(id, columna, valor)
  2. {
  3.     var actualizar;
  4.     if(window.XMLHttpRequest)
  5.     {
  6.         actualizar = new XMLHttpRequest();
  7.     }
  8.     else
  9.     {
  10.         actualizar = new ActiveXObject("Microsoft.XMLHTTP");
  11.     }
  12.     actualizar.onreadystatechange=function()
  13.     {
  14.         if(actualizar.readyState==4 && actualizar.status==200)
  15.         {
  16.             document.getElementById("Mensaje").innerHTML=actualizar.responseText;
  17.         }
  18.     }
  19.     actualizar.open("GET","actualiza.php?puesto="+id+"&col="+columna+"&val="+valor,true);
  20.     actualizar.send();
  21. }

y por ultimo el php que es en donde tengo el problema:

Código PHP:
Ver original
  1. include("../Conexion/conexion.php");
  2.    
  3.     $id = mysqli_real_escape_string($conexion, $_GET['puesto']);
  4.     $columna = mysqli_real_escape_string($conexion, $_GET['col']);
  5.     $valor = mysqli_real_escape_string($conexion, $_GET['val']);
  6.    
  7.     $consulta = mysqli_query($conexion, "UPDATE PerfilPuesto SET '".$columna."' = '".$valor."' WHERE IdPerfil = '".$id."'")  or die("Error al ejecutar la query: ".mysqli_error($conexion));
  8.    
  9.     if(mysqli_affected_rows($consulta) == 1)
  10.     {
  11.         echo "Registro Actualizado";
  12.     }
  13.     elseif(mysqli_affected_rows($consulta) == 0)
  14.     {
  15.         echo "No se actualizo el registro";
  16.     }
  17.     elseif(mysqli_affected_rows($consulta) != 0 || mysqli_affected_rows($consulta) != 1)
  18.     {
  19.         echo "Se genero un error";
  20.     }
espero haber sido explicito, muchas gracias por cualquier orientación.
  #2 (permalink)  
Antiguo 03/09/2014, 18:21
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 al realizar un update por medio de ajax

Es un error a nivel SQL, estás poniendo los nombres de las columnas entre apóstrofos, que en MySQL se usan exclusivamente para cadenas de texto.
Código PHP:
Ver original
  1. $sql = "UPDATE PerfilPuesto SET $columna = '$valor' WHERE IdPerfil = '$id'";
  2. $consulta = mysqli_query($conexion, $sql)  or die("Error al ejecutar la query: ".mysqli_error($conexion));
__________________
¿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 03/09/2014, 18:40
Avatar de MLDGATO  
Fecha de Ingreso: marzo-2011
Ubicación: Guatemala
Mensajes: 113
Antigüedad: 13 años, 1 mes
Puntos: 2
Respuesta: Error al realizar un update por medio de ajax

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Es un error a nivel SQL, estás poniendo los nombres de las columnas entre apóstrofos, que en MySQL se usan exclusivamente para cadenas de texto.
Código PHP:
Ver original
  1. $sql = "UPDATE PerfilPuesto SET $columna = '$valor' WHERE IdPerfil = '$id'";
  2. $consulta = mysqli_query($conexion, $sql)  or die("Error al ejecutar la query: ".mysqli_error($conexion));
Muchas gracias ya me funcionó el Update pero ahora tengo el siguiente problema y es el siguiente:


Warning: mysqli_affected_rows() expects parameter 1 to be mysqli, boolean given in /home/manuelda/public_html/Suministra/Administracion/actualiza.php on line 15

Warning: mysqli_affected_rows() expects parameter 1 to be mysqli, boolean given in /home/manuelda/public_html/Suministra/Administracion/actualiza.php on line 19


Leí en el manual de php que mysqli_affected_rows devuelve un numero según el numero de filas afectadas de una consulta así que si me da 1 quiere decir que se actualizo una fila de mi tabla pero no me funciona ya que sale el error, me podrías ayudar, muchas gracias amigo.

Otra vez dejo el php

Código PHP:
Ver original
  1. include("../Conexion/conexion.php");
  2.    
  3.     $id = mysqli_real_escape_string($conexion, $_GET['puesto']);
  4.     $columna = mysqli_real_escape_string($conexion, $_GET['col']);
  5.     $valor = mysqli_real_escape_string($conexion, $_GET['val']);
  6.  
  7.    
  8.     $sql = "UPDATE PerfilPuesto SET $columna = '$valor' WHERE IdPuesto = '$id'";
  9.     $consulta = mysqli_query($conexion, $sql) or die("Error al ejecutar la query: ".mysqli_error($conexion));
  10.    
  11.     if(mysqli_affected_rows($consulta) == 1)
  12.     {
  13.         echo "Registro Actualizado";
  14.     }
  15.     elseif(mysqli_affected_rows($consulta) == 0)
  16.     {
  17.         echo "No se actualizo el registro";
  18.     }
  19.     elseif(mysqli_affected_rows($consulta) != 0 || mysqli_affected_rows($consulta) != 1)
  20.     {
  21.         echo "Se genero un error";
  22.     }
  #4 (permalink)  
Antiguo 03/09/2014, 19:03
Avatar de MLDGATO  
Fecha de Ingreso: marzo-2011
Ubicación: Guatemala
Mensajes: 113
Antigüedad: 13 años, 1 mes
Puntos: 2
Respuesta: Error al realizar un update por medio de ajax

Encontre el error en el mysqli_affected_rows y es que utilizaba la variable de la consulta en vez de la variable de conexion. Muchas gracias.

Etiquetas: ajax, mysql
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 18:42.