Foros del Web » Programando para Internet » PHP »

Empezando con PDO

Estas en el tema de Empezando con PDO en el foro de PHP en Foros del Web. Buenas a [email protected] y Feliz Año!! Tengo un problema que no se como solucionar... intento actualizar los registros de una BD con PDO, y seguro ...
  #1 (permalink)  
Antiguo 02/01/2021, 08:30
 
Fecha de Ingreso: abril-2013
Ubicación: Barcelona
Mensajes: 23
Antigüedad: 8 años
Puntos: 0
Pregunta Empezando con PDO

Buenas a [email protected] y Feliz Año!!

Tengo un problema que no se como solucionar... intento actualizar los registros de una BD con PDO, y seguro que es una tontería que hago mal, pero no lo veo...

Código:
$sql = "UPDATE usuarios SET nombre='".$nombre."' WHERE email='".$email."'";
    $stmt = $db->prepare($sql);
	$stmt->execute();
Así funciona perfectamente, pero quisiera hacerlo de una manera mejor y mas sencilla, y es la que no me funciona...

Código:
$sentencia = $db->prepare("UPDATE usuarios SET nombre=:nombre WHERE email:=email");
$sentencia->bindParam(':nombre', $nombre);
$sentencia->bindParam(':email', $email);

$sentencia->execute();
Muchas gracias!
  #2 (permalink)  
Antiguo 02/01/2021, 10:26
 
Fecha de Ingreso: abril-2006
Mensajes: 583
Antigüedad: 15 años
Puntos: 120
Respuesta: Empezando con PDO

Cita:
Iniciado por novataenphp Ver Mensaje
Buenas a [email protected] y Feliz Año!!

Tengo un problema que no se como solucionar... intento actualizar los registros de una BD con PDO, y seguro que es una tontería que hago mal, pero no lo veo...

Código:
$sql = "UPDATE usuarios SET nombre='".$nombre."' WHERE email='".$email."'";
    $stmt = $db->prepare($sql);
	$stmt->execute();
Así funciona perfectamente, pero quisiera hacerlo de una manera mejor y mas sencilla, y es la que no me funciona...

Código:
$sentencia = $db->prepare("UPDATE usuarios SET nombre=:nombre WHERE email:=email");
$sentencia->bindParam(':nombre', $nombre);
$sentencia->bindParam(':email', $email);

$sentencia->execute();
Muchas gracias!

tu error esta en esta linea

Código PHP:
$sentencia $db->prepare("UPDATE usuarios SET nombre=:nombre WHERE email:=email"); 
email:=email

deberia ser email=:email
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.com/pools/c/8lmNLmWnG9
  #3 (permalink)  
Antiguo 02/01/2021, 10:28
 
Fecha de Ingreso: abril-2006
Mensajes: 583
Antigüedad: 15 años
Puntos: 120
Respuesta: Empezando con PDO

tu error esta en esta linea
Código PHP:
Ver original
  1. $sentencia = $db->prepare("UPDATE usuarios SET nombre=:nombre WHERE email:=email");

email:=email
deberia ser
email=:email
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.com/pools/c/8lmNLmWnG9
  #4 (permalink)  
Antiguo 02/01/2021, 10:28
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.111
Antigüedad: 10 años, 2 meses
Puntos: 163
Respuesta: Empezando con PDO

sin ir muy lejos he encontrado que en el WHERE tienes asi := en lugar de =:

prueba si eso te soluciona, si no, posiblemente tienes que definir si es cadena o entero en el bindParam
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)
  #5 (permalink)  
Antiguo 02/01/2021, 10:29
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.111
Antigüedad: 10 años, 2 meses
Puntos: 163
Respuesta: Empezando con PDO

eliminar porfavor
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)

Última edición por petit89; 02/01/2021 a las 17:56
  #6 (permalink)  
Antiguo 03/01/2021, 09:53
 
Fecha de Ingreso: abril-2013
Ubicación: Barcelona
Mensajes: 23
Antigüedad: 8 años
Puntos: 0
Respuesta: Empezando con PDO

Muchas gracias por los comentarios, perdonad, al escribir... lo había escrito mal... aun así no lo he conseguido... he añadido los parámetros del bind, que entiendo que STR es una cadena de texto y el 150 el lengh de dicha cadena...

Código:
$sentencia = $db->prepare("UPDATE usuarios SET nombre=:nombre WHERE email=:email");
$sentencia->bindParam(':nombre', $nom,PDO::PARAM_STR, 150);
$sentencia->bindParam(':email', $email, PDO::PARAM_STR, 150);

$sentencia->execute();



La zona horaria es GMT -6. Ahora son las 15:32.