Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => 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 (php) [Seleccionar]
$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 (php) [Seleccionar]
$sql = "UPDATE TB_CLIENTE SET NOMBRE_CLIENTE='".$name."', APELLIDO_CLIENTE='".$apellido."', DIRECCION_CLIENTE='".$direccion."' WHERE ID_CLIENTE='"$ident"'";
                                                                                                                                                 ^ 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 (php) [Seleccionar]
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 (php) [Seleccionar]
if ($insert_stmt = $mysqli->prepare("UPDATE TB_CLIENTE SET NOMBRE_CLIENTE = ?,
APELLIDO_CLIENTE = ?,
DIRECCION_CLIENTE = ?
WHERE ID_CLIENTE = ?")) {

$insert_stmt->bind_param('sssi', $name, $apellido, $direccion, $ident);

// Execute the prepared query.
if (! $insert_stmt->execute()) {
//header('Location: /dir/to/error.php?err=Some error message');
//printf("Error: %s.\n", $insert_stmt->error);
}
}


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