Foros del Web » Programando para Internet » PHP »

ejecutar dos update desde funcion

Estas en el tema de ejecutar dos update desde funcion en el foro de PHP en Foros del Web. hola amigos espero me puedan ayudar tengo un formulario con un campo de 32 caracteres y deependiento de si se envian los 32 caracteres se ...
  #1 (permalink)  
Antiguo 05/12/2012, 19:41
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
ejecutar dos update desde funcion

hola amigos espero me puedan ayudar

tengo un formulario con un campo de 32 caracteres y deependiento de si se envian los 32 caracteres se realiza un update a una base de datos estoy tengo problemas para que me funcionen el update

Código PHP:
Ver original
  1. public function update_user($db)
  2.         {  
  3.             $id_usuarios = $_POST['id_usuarios'];
  4.             $nom_usuario = $_POST['nombre'];
  5.             $nom_apellido = $_POST['apellido'];
  6.             $usu_usuario = $_POST['usuario'];
  7.             $usu_telefono1 = $_POST['telefono1'];
  8.             $usu_telefono2 = $_POST['telefono2'];
  9.             $usu_correo = $_POST['correo'];
  10.             $usu_estado = $_POST['estado'];
  11.             $perfil = $_POST['perfil'];
  12.             $tamano=$_POST['clave'];
  13.             $result=strlen($tamano);
  14.             if($result==32){
  15. $upd = $db->prepare('UPDATE usuarios SET nom_usuario = :nom_usuario, nom_apellido = :nom_apellido, usu_usuario = :usu_usuario ,
  16.                                  usu_telefono1 = :usu_telefono1,usu_telefono2 = :usu_telefono2, usu_correo = :usu_correo, usu_estado = :usu_estado, perfil = :perfil
  17.                                  WHERE id_usuarios = :id_usuarios');
  18.                                  
  19.             $upd->bindParam(':id_usuarios', $id_usuarios);
  20.             $upd->bindParam(':nom_usuario', $nom_usuario);
  21.             $upd->bindParam(':nom_apellido', $nom_apellido);
  22.             $upd->bindParam(':usu_usuario', $usu_usuario);
  23.             //$upd->bindParam(':usu_clave', $usu_clave);
  24.             $upd->bindParam(':usu_telefono1', $usu_telefono1);
  25.             $upd->bindParam(':usu_telefono2', $usu_telefono2);
  26.             $upd->bindParam(':usu_correo', $usu_correo);
  27.             $upd->bindParam(':usu_estado', $usu_estado);
  28.             $upd->bindParam(':perfil', $perfil);
  29.             $upd->execute();
  30.             }else{
  31.            
  32.            
  33.             $usu_clave_bd = $_POST['clave'];
  34.             $usu_clave = $_POST['clave'];
  35.  
  36.    
  37.             $upd2 = $db->prepare('UPDATE usuarios SET nom_usuario = :nom_usuario, nom_apellido = :nom_apellido, usu_usuario = :usu_usuario ,usu_clave = :usu_clave,
  38.                                  usu_telefono1 = :usu_telefono1,usu_telefono2 = :usu_telefono2, usu_correo = :usu_correo, usu_estado = :usu_estado, perfil = :perfil
  39.                                  WHERE id_usuarios = :id_usuarios');
  40.                                  
  41.             $upd2->bindParam(':usu_clave', $usu_clave);      
  42.             $upd2->execute();      
  43.  
  44. $upd3 = $db->prepare("ALTER ROLE $usu_usuario PASSWORD '$usu_clave_bd'");
  45.             $upd3->execute();
  46.            
  47.             $_SESSION['clave_nueva'] = $usu_clave_bd ;
  48.            
  49.             }
  50.            
  51.            
  52.         }

estoy obteniendo este error

Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\volcanicos\models\user _Model.php on line 138

y esta es la linea $upd2->execute();

Última edición por Montes28; 05/12/2012 a las 20:59
  #2 (permalink)  
Antiguo 06/12/2012, 13:53
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: ejecutar dos update desde funcion

Hmmm se supone que el bindParam esté despues del prepare ¿por qué lo estás colocando antes? Además la variable la estás declarando luego. Lo pregunto por curiosidad tal vez me perdí de algo.

Lo que noto en el error es que el error dice que declaro en el prepare cierta cantidad de tokens pero cuando lo trata de llenar con los bindParams falta alguno que no incluyo.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 06/12/2012, 14:06
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: ejecutar dos update desde funcion

Cita:
Iniciado por abimaelrc Ver Mensaje
Hmmm se supone que el bindParam esté despues del prepare ¿por qué lo estás colocando antes? Además la variable la estás declarando luego. Lo pregunto por curiosidad tal vez me perdí de algo.

Lo que noto en el error es que el error dice que declaro en el prepare cierta cantidad de tokens pero cuando lo trata de llenar con los bindParams falta alguno que no incluyo.
cierto, la cosa era al revés, Doctrine me tiene mal acostumbrado
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #4 (permalink)  
Antiguo 06/12/2012, 14:52
Avatar de Reedyseth  
Fecha de Ingreso: enero-2009
Ubicación: Chihuahua, México
Mensajes: 419
Antigüedad: 15 años, 3 meses
Puntos: 36
Respuesta: ejecutar dos update desde funcion

El error te dice que tienes problemas en el numero de parametros que estas ligando.

Ya quedo resuelto tu problema ?

Etiquetas: formulario, funcion, update, usuarios
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 07:35.