Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: d91 en 28 Septiembre 2014, 05:21 am



Título: query-update
Publicado por: d91 en 28 Septiembre 2014, 05:21 am
Hola, como han estado, tengo un problemita al declarar la consulta para realizar un update a una tabla de mysql me da error no se que le hace falta, el error dice... Unable to prepare statement: 1, near "=": syntax error line 12 y esta linea es:
Código
  1. $sql = "UPDATE TB_CLIENTE SET NOMBRE_CLIENTE='".$name."', APELLIDO_CLIENTE='".$apellido."', DIRECCION_CLIENTE='".$direccion."' WHERE ID_CLIENTE='$ident'";
agradecere sus aportes


Título: Re: query-update
Publicado por: gAb1 en 28 Septiembre 2014, 05:44 am
Hola, tal vez este sea el problema:

Código
  1. $sql = "UPDATE TB_CLIENTE SET NOMBRE_CLIENTE='".$name."', APELLIDO_CLIENTE='".$apellido."', DIRECCION_CLIENTE='".$direccion."' WHERE ID_CLIENTE='"$ident"'";
  2.                                                                                                                                                  ^ Aqui

Olvidaste poner las dobles comillas dentro de las comillas normales.

Aunque si $ident es integer no uses comillas (debería serlo ya que seguramente sea auto increment):

Código
  1. WHERE ID_CLIENTE=$ident";

Si no funciona, quita las comillas dobles.

Suerte!


Título: Re: query-update
Publicado por: MinusFour en 29 Septiembre 2014, 18:38 pm
Estás usando sentencias parametrizadas, necesitas hacer un bind al parametro.


Título: Re: query-update
Publicado por: gAb1 en 30 Septiembre 2014, 06:28 am
Exacto, las sentencias preparadas no deberían hacerse asi directamente. Esta es la manera correcta:

(Y no es necesario crear una variable que contenga la sentencia.)

Código
  1. if ($insert_stmt = $mysqli->prepare("UPDATE TB_CLIENTE SET NOMBRE_CLIENTE = ?,
  2. APELLIDO_CLIENTE = ?,
  3. DIRECCION_CLIENTE = ?
  4. WHERE ID_CLIENTE = ?")) {
  5.  
  6. $insert_stmt->bind_param('sssi', $name, $apellido, $direccion, $ident);
  7.  
  8. // Execute the prepared query.
  9. if (! $insert_stmt->execute()) {
  10. //header('Location: /dir/to/error.php?err=Some error message');
  11. //printf("Error: %s.\n", $insert_stmt->error);
  12. }
  13. }

Tambien lo puedes hacer sin el if, los quitas y listo :)